Stamps.com の USB 計量器を持っています (Model 510: http://www.stamps.com/postage-online/digital-postage-scales/ )
オンラインでスタンドアロンにするためのドライバーを見つけることができましたが、次の質問は、従来の ASP ページ / VBScript でスケール上のオブジェクトの重量を読み取る方法です。
どこから検索を開始すべきか提案はありますか?
Stamps.com の USB 計量器を持っています (Model 510: http://www.stamps.com/postage-online/digital-postage-scales/ )
オンラインでスタンドアロンにするためのドライバーを見つけることができましたが、次の質問は、従来の ASP ページ / VBScript でスケール上のオブジェクトの重量を読み取る方法です。
どこから検索を開始すべきか提案はありますか?
これが特定のモデルに適用できるかどうかはわかりませんが、http://nicholas.piasecki.name/blog/2008/11/reading-a-stamps-com-usb-scale-from-c-に記事があります。シャープ/基本的なUSBHID(ヒューマン入力デバイス)標準に準拠しているため、作成者がスケールから読み取るC#コードを記述した場所。著者はMikeOBrienのHIDライブラリhttps://github.com/mikeobrien/HidLibraryを利用しました
彼らは生のバイトを取得することから始めます:
HidDeviceData inData;
HidDevice[] hidDeviceList;
HidDevice scale;
hidDeviceList = HidDevices.Enumerate(0x1446, 0x6A73);
if (hidDeviceList.Length > 0)
{
int waitTries;
scale = hidDeviceList[0];
waitTries = 0;
scale.Open();
if (scale.IsConnected)
{
inData = scale.Read(250);
for (int i = 0; i < inData.Data.Length; ++i)
{
Console.WriteLine("Byte {0}: {1:X}", i, inData.Data[i]);
}
}
scale.Close();
scale.Dispose();
}
次に、ペイロードをリバースエンジニアリングし、オンス単位の重量を取得する関数を作成します。
private void GetStampsComModel2500iScaleWeight(out decimal? ounces, out bool? isStable)
{
HidDeviceData inData;
HidDevice[] hidDeviceList;
HidDevice scale;
isStable = null;
ounces = null;
hidDeviceList = HidDevices.Enumerate(0x1446, 0x6A73);
if (hidDeviceList.Length > 0)
{
int waitTries;
scale = hidDeviceList[0];
waitTries = 0;
scale.Open();
// For some reason, the scale isn't always immediately available
// after calling Open(). Let's wait for a few milliseconds before
// giving up.
while (!scale.IsConnected && waitTries < 10)
{
Thread.Sleep(50);
waitTries++;
}
if (scale.IsConnected)
{
inData = scale.Read(250);
ounces = (Convert.ToDecimal(inData.Data[4]) +
Convert.ToDecimal(inData.Data[5]) * 256) / 10;
isStable = inData.Data[1] == 0x4;
}
scale.Close();
scale.Dispose();
}
}
従来のASPページ/VBScript(サーバー上で)から重みを読み取るための最も簡単な解決策は、動作中のC#クラスをCOMコンポーネントに変換することです。C#COMコンポーネントを作成してサーバーに登録するためのチュートリアルがあります。その後、VBScriptから次のように呼び出します。
Dim app
Set app = Server.CreateObject("MyScaleComponent")