你读到的是字节流,int占4个字节,你要读取4个字节(按你的通信规则去读去对应的信息),然后转化

解决方案 »

  1.   

    唉, 小的不才 ,是波动率问题,解决了,但新问题来了,我要连接多个com串口,想知道一条数据来自哪个com串口,这个怎么表示哇
      

  2.   

    那么既然每个串口有单独的串口变量,它们的回调函数最好也不要弄成同一个
    当然弄成同一个也不是不可以,判断下sender即可
      

  3.   

    我现在只是接受数据不发送数据,serialPort来定义多个串口不可以么?就需要多个serialPort_datareceived函数么?一定需要多进程么?
      

  4.   

    那你就试试呗.
    反正必须用serialPort定义多个串口对象
    比如serialPort SP1,SP2,SP3,SP4;
    然后分别初始化并OPEN,挂上received当然也可以都挂同一个received,然后执行的时候判断一下sender,看是哪个串口对象引发的事件
      

  5.   

    呵呵,不晓得你什么读的。反正我要的 要解释称你说的东西,
    先要,去掉校验位,好像就前 几位,然后还等知道 你获得的 东西的数据结构
    才能 翻译成你想要的东西,如:你能确定你得到的是一个 utf-8的字符串,就好翻译了。懂不,你不能 乱问一通。
      

  6.   

    看错了,直接转换 ,不就玩了。
    你上面发的 00 00 78 00 78 78 78 78 00 00 00 00 00 00 00 00 00 78 00 00 00 00 78 00 78 00
    转换成 10 进制 也是00 00 78 00 78 78 78 78 00 00 00 00 00 00 00 00 00 78 00 00 00 00 78 00 78 00
    因为上面的 没有出现 a,b c,d
      

  7.   

    我打算用这种方法,可是问题不断哇,
    如下,跟textbox追加内容,怎么会这样呢?
     try
                        {
                            int N = this.SP.BytesToRead;
                            Buffer_Get = new byte[N];
                            this.SP.Read(Buffer_Get, 0, N);
                            Builder.Clear();
                            this.Invoke((EventHandler)(delegate
                            {
                                //this.Txt_Get.AppendText(Builder.ToString());
                                this.Txt_Get.AppendText(System.Text.Encoding.Default.GetString(Buffer_Get));
                                //this.Txt_Get.AppendText(BitConverter.ToDouble(Buffer_Get, 0).ToString()); //Txt_Get是一个textbox控件
                                this.Txt_Get.AppendText(a.ToString());
                            }));
                        }
    在appendtext后加个字符串,就出现如图,百思不得其解
     this.Txt_Get.AppendText(System.Text.Encoding.Default.GetString(Buffer_Get)+ "a" );