由于SerialPort.Encoding默认值为System.Text.ASCIIEncoding,即发送和接收都按ASCII码处理,而方法 SerialPort.Write(String strData)发送的字符串中的每个字符都被当成ASCII码处理了。ASCII是一种七位的编码,所以你收到的值 00~7F。
2)解决方法:
使用SerialPort.Write(Byte[], Int32, Int32)发送数据;
使用SerialPort.Read Method (Byte[], Int32, Int32) 或者 ReadByte() 接收数据
当往 SBUF写入1个八位数据时,启动发送 *** 作,数据从TXD端实现异步发送。发送完一帧数据后自动置TI=1,请求中断。要继续发送时,TI清零便可。你可以自己写一个连续发送的函数:只要发送前9个数据后,TI清零就成。
或者写一个一次之功能发送一个字节的函数,然后利用循环调用前面的函数,实现10个数据的发送。。。
大多数情况都用后者吧。。。
传输过程是一位一位的二进制进行传输,传输完一个字节才会产生中断或者事件。所以从编程角度上看,是一整个字符进行传输的。
从物理信号层面看,还是一位一位传输的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)