繁体   English   中英

从插入C#的USB端口的设备中读取ASCII 8位数据

[英]Read ASCII 8-bit data from a device plugged in USB port in C#

我有一个插入到USB端口的电子天平设备 输出始终是连续的,我可以用C#中的LibUsbDotNet读取它。 传输代码是ASCII 8位代码。 其他设备信息是:

start bit:1bit, Data bit:8bits, Parity bit:0/1 bits, Stop bit:2bits

数据位(D1-D7)或(D1-D8)是数值(0-9); 代码是30H-39H

我的问题是:

  1. 如何从设备读取最新数据?

  2. 如何将它们(字节)转换为ASCII 8位(30H-39H),以便理解其数字?

我的代码是:

private void cmdRead_Click(object sender, EventArgs e)
{
    cmdRead.Enabled = false;
    byte[] readBuffer = new byte[64];
    int uiTransmitted;
    ErrorCode eReturn;
    if ((eReturn = mEpReader.Read(readBuffer, 1000, out uiTransmitted)) == ErrorCode.None)
    {
        tsStatus.Text = uiTransmitted + " bytes read.";
        showBytes(readBuffer, uiTransmitted);
    }
    else
        tsStatus.Text = "No data to read! " + eReturn;

    cmdRead.Enabled = true;
}
private void showBytes(byte[] readBuffer, int uiTransmitted)
{
    if (ckShowAsHex.Checked)
    {
        // Convert the data to a hex string before displaying
        string hex = GetHexString(readBuffer, 0, uiTransmitted).ToString();
        tRecv.AppendText(hex);
        tRecv.AppendText(Environment.NewLine);
    }
    else
    {
        // Display the raw data
        tRecv.AppendText(Encoding.UTF8.GetString(readBuffer, 0, uiTransmitted));
        tRecv.AppendText(Environment.NewLine);
    }
}
private static StringBuilder GetHexString(byte[] data, int offset, int length)
{
    StringBuilder sb = new StringBuilder(length * 3);
    for (int i = offset; i < (offset + length); i++)
    {
        sb.Append(data[i].ToString("X2") + " ");
    }
    return sb;
}

如果需要,我可以上传项目。 例如,当设备显示3.04时,应用程序返回的值为:

01 62 21 60 68 38 7F 60 78 61 60 28 6D 7F 61 40 7F 69 61 62 79 69 79 79 78 79 79 20 78 69 61 21 20 68 20 61 68 7F 6B 63 61 7B 60 78 39 6D 7F 60 41 28 69 7F 60 63 01 4F 7F 60 78 69 79 69 40 69 

如何从上述响应中找到设备显示的值,或者如何从设备中获取正确的数据(正确的编码)?

就像Hans Passant评论中提到的那样,COM-To-USB端口适配器已经安装了一个新的COM端口,其工作原理与文档中提到的制造商完全相同。 从该COM端口接收的所有行均已准备好使用ASCII码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM