我在zigbee的node上向serial port发送数据如:“0,1,2,3,4,5...."这样的8位整型数。
我在接受的时候,用HyperTerminal,读取,是正常的ASCII对应的0,1,2,3,4,5....的符号。
但是用在C#中,用serail por读取出来的数据,如果用:
SerialPort sp;
int s = sp.ReadChar();(不知道为什么 readchar函数返回值是int型)读出来的数字,就一直是63.
如果用:
int s = sp.ReadByte();读出来的数值都是254,或者255,255,255(后面圈是255)
我读取数字用的而是:
 Invoke(new Action(delegate(){this.richTextBox1.Text += s.ToString() +"\t";}));
因为鄙人用的是vs 2008,下的线程,所以,需要用代理。如何才能争取的读取并且显示出来呢?

解决方案 »

  1.   

    不对,如果用:
    int s = sp.ReadByte();读出来的数值都是254,或者255,255,255(80%以上是255,偶尔出现254)
      

  2.   

    另外,我的波特率设置是9600。timeout时间是5000毫秒
    node是每一秒发送一次数据。
    读取数据的时候是在while()中,每次读取thread.sleep(500);
    如果用int s = sp.ReadByte();偶尔会出现timeout.
      

  3.   

    网上很多资料,可以自己去查,随便给一个:
    http://www.cnblogs.com/viki117/articles/1263744.html
      

  4.   

    我也碰到过这问题,不过当时我用的是vb,最后改了  用readbyte ,byte s = sp.ReadByte();
    用BYTE接收,就好了。
    奇怪,我最初也一直收的就是63。
      

  5.   

    不过,朋友,请恕在下愚笨。
    sp.ReadByte()的返回值是整型的...费解……
    然后,鄙人就byte firstByte=Convert.ToByte(sp.ReadByte());先读一下数据看看 
    结果,数据依然是255.呕吐中
      

  6.   

    会不会和 ascii 和unicode有关呢。
    因为读出来的一直是255的话,就是FF..