C# 为什么条形码没有响应图像捕获命令

C# 为什么条形码没有响应图像捕获命令,c#,serial-port,barcode-scanner,C#,Serial Port,Barcode Scanner,我正在写一个从条形码读写的程序 写入时我的问题(向条形码发送命令) 我在pdf制造商条形码中读取到捕获图像的命令是IMGSNP,因此我将其传递给write函数,如下所示serialPortObj.write(“IMGSNP”) 但是为什么没有条形码来响应命令呢?并且没有捕获图像:( 这条路错了吗 (在某些情况下,我可能需要拍摄的图像不是条形码本身,而是护照或产品等的图像,其中不包含条形码) 条形码制造商是手持的(4800p) 谢谢你的帮助 这是我的密码 private SerialPo

我正在写一个从条形码读写的程序 写入时我的问题(向条形码发送命令)

我在pdf制造商条形码中读取到捕获图像的命令是IMGSNP,因此我将其传递给write函数,如下所示serialPortObj.write(“IMGSNP”)

但是为什么没有条形码来响应命令呢?并且没有捕获图像:( 这条路错了吗 (在某些情况下,我可能需要拍摄的图像不是条形码本身,而是护照或产品等的图像,其中不包含条形码) 条形码制造商是手持的(4800p) 谢谢你的帮助

这是我的密码

    private  SerialPort Com ;        
    private delegate void DataReadDel(string Text);

    private void Form1_Load(object sender, EventArgs e)
    {
        Com = new SerialPort("COM4");
        Com.Open();
        Com.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
    }
    private void port_DataReceived(object sender,SerialDataReceivedEventArgs e)
    {
        Com.Encoding = Encoding.Default;
        this.BeginInvoke(new DataReadDel(DataReceived), new object[] {Com.ReadExisting() });
    }
    private void DataReceived(string dR)
    {
        textBox1.Text = dR;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (! Com.IsOpen )
        {
            Com.Open();
        }
        Com.Write("IMGSNP1B1L");
        Com.Write("IMGSHP");
        string imgbytes = Com.ReadExisting();// return ""
    }

您确定条形码阅读器没有捕获图像吗?根据文档:

处理图像捕捉(IMGSNP)命令时拍摄图像。最后一张图像始终存储在内存中。您可以使用IMGSHP命令“发送”图像


因此,您可能正在使用IMGSNP拍摄图像,但所发生的一切都是将图像存储在内存中,而不是将其作为响应发送回您。然后尝试发出IMGSHP命令,查看是否有任何数据要从您的串行端口读取。

您确定条形码读取器未被捕获吗正在对图像进行加密?根据文档:

处理图像捕捉(IMGSNP)命令时拍摄图像。最后一张图像始终存储在内存中。您可以使用IMGSHP命令“发送”图像


因此,您可能正在使用IMGSNP拍摄图像,但所发生的一切都是将图像存储在内存中,而不是将其作为响应发送回您。然后尝试发出IMGSHP命令,查看是否有任何数据可从串行端口读取。

以及命令本身,您是否需要验证有终止字符吗

一种常见的方法是将命令包包装成STX和ETX字符,以便条形码阅读器知道何时收到完整的命令,或者可能只是以回车符(CR)和换行符(LF)终止。您需要检查规格

另外,由于您发送的是字符串,编码可能很重要,我希望条形码阅读器需要发送ASCII字符,但同样,您应该检查单元以确保

我怀疑发送命令的easiset方法是将其作为字节数组发送,这使得在必要时更容易使用STX、ETX、CR或LF字符,因为这些字符是不可打印的字符,并且具有以下值:


STX=0x02、ETX=0x03、CR=0x0D、LF=0x0A以及命令本身,是否必须提供任何终止字符

一种常见的方法是将命令包包装成STX和ETX字符,以便条形码阅读器知道何时收到完整的命令,或者可能只是以回车符(CR)和换行符(LF)终止。您需要检查规格

另外,由于您发送的是字符串,编码可能很重要,我希望条形码阅读器需要发送ASCII字符,但同样,您应该检查单元以确保

我怀疑发送命令的easiset方法是将其作为字节数组发送,这使得在必要时更容易使用STX、ETX、CR或LF字符,因为这些字符是不可打印的字符,并且具有以下值:


STX=0x02,ETX=0x03,CR=0x0D,LF=0x0A

您需要将串行命令标头与IMGSNP命令一起发送,以便扫描仪捕获并发送图像。标头为三个ASCII字符:SYN M CR(ASCII 22,77,13).

您需要将串行命令标头与IMGSNP命令一起发送,以便扫描仪捕获并发送图像。标头为三个ASCII字符:SYN M CR(ASCII 22,77,13)。

在设备考虑接收您的请求之前,您需要先发送SYN M CR

以下信息是我自己的条形码阅读器在尝试做类似的事情时获得的


当使用IMGSHP时,设备将使用SYN(0x16)回复,后跟0xfe[4字节数据长度,小端数]0x0d[some data]0x1d[image data]

在设备考虑接收您的请求之前,您需要先发送SYN M CR

以下信息是我自己的条形码阅读器在尝试做类似的事情时获得的


当使用IMGSHP时,设备将用一个SYN(0x16)后跟0xfe[4字节数据长度,小尾端]0x0d[某些数据]0x1d[图像数据]

条形码读取器出现故障并进入BOMASINDF)@@128303cn?~2!请尝试供应商的网站以获得支持,这将有所帮助……请您提供更多关于条形码扫描仪的信息——也许是PDF文档的链接?找到文档:如果您在stackoverflow上询问如何编写安全的比特币交换!条形码读取器失败并进入boomASINDF)@@128303cn?~2!请尝试供应商的网站以获得支持,这将有所帮助……请您提供更多关于条形码扫描仪的信息——也许是PDF文档的链接?找到文档:如果您在stackoverflow上询问如何编写安全的比特币交换!非常感谢您,尤其是潘丁格斯先生,并对延迟回复表示抱歉事实上,我已经使用了所有命令,但问题是条形码没有响应命令(即使它没有启动轻读或beebing)我已经与制造商进行了通信,如果有任何建议,我等待答复(非常感谢:)您能编辑您的原始问题以包含一些示例代码吗?除了灯光和哔哔声,你确定它没有响应吗?手册中说,在使用IMGSNP时,默认情况下会禁用蜂鸣音和LED。非常感谢Pandincus,再次对我添加的延迟表示抱歉