客户给了一个读写器和几个纽扣标签,还有一套c++写的Demo程序,功能大致分为打开关闭串口,读出纽扣标签的id,修改纽扣标签的id(写入id覆盖原来的),现在领导要用c#写一个测试用的程序,我用c#中的SerialPort类,完成了打开关闭串口,读取纽扣标签中的id,可是写入标签数据怎么都写不进去。。请各位高手前来帮帮小弟
写入的代码private void btnwrite_Click(object sender, EventArgs e)
        {            
            if (!sp.IsOpen)
            {
                textBox1.Text += DateTime.Now.ToString() + "\tCom Not Open \r\n";
                return;
            }
            sp.DiscardInBuffer();
            System.Threading.Thread.Sleep(1000);
            byte[] buffer = new byte[4];
            try
            {
                //buffer = System.Text.Encoding.Default.GetBytes(textBox2.Text);
                buffer = HexStringToByteArray(textBox2.Text);
                sp.Write(buffer, 0, buffer.Length);
                //sp.WriteLine(textBox2.Text);                //System.Threading.Thread.Sleep(2000);
                //sp.WriteLine(textBox2.Text);
            }
            catch (Exception)
            {
                textBox1.Text += DateTime.Now.ToString() + "\tTimeOut \r\n";
                return;
            }
            textBox1.Text += DateTime.Now.ToString() + "\tOK \r\n";
        }

解决方案 »

  1.   

    你写数据没有协议文档么?你对照的生成数据发送没结果?问题简化为2步,首先自己手工组合数据,用串口通讯工具,例如sscomm32.exe发送尝试,确定协议理解正确,然后软件组合协议,发送,接受,判断合理并分析。
      

  2.   

    我刚接触这个串口的读写器,你说的协议文档是指标签和读写器的协议文档吗?我拿到这个读写器的时候只有c++的一个dll文件和一些不能运行的c++源代码,我也不懂c++
    SerialPort的write方法是把数据发送到串口,不写入标签中的吗?如果是这样请问如何能把数据写入标签中,有没有其他方法?
      

  3.   

    我是这样想的。。那个dll的动态库是c++写的,那用c#写出和动态库中类似的方法可以吗
      

  4.   

    其实最终结果就是把数据写入标签中,比如原本标签的id读取出来是123,然后把id变成321在写入这个标签,以后读取标签的id就是321了
      

  5.   

    直接c#调用c编写的dll文件,只要询问客户相关的接口名及传入参数类型、传出参数类型就可以搞定了。何必那么自己重新写呢!
      

  6.   

    把你的代码都发过来,[email protected]