我有一个来自stamps.com (型号510型:http://www.stamps.com/postage-online/digital-postage-scales/)的U盘称重
我在网上找到了使其独立的驱动程序,但我的下一个问题是如何在我的经典ASP页面/ VBScript中读取称重上的对象的重量。
有没有什么建议我应该从哪里开始搜索呢?
发布于 2012-05-02 11:20:53
我不确定这是否适用于你的特定型号,但在http://nicholas.piasecki.name/blog/2008/11/reading-a-stamps-com-usb-scale-from-c-sharp/上有一篇文章,作者编写了C#代码来读取天平,因为它符合基本的USB (人类输入设备)标准。作者使用了Mike OBrien的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") https://stackoverflow.com/questions/10407128
复制相似问题