很奇怪,我发0x55,0x33,0xf0都是好的,但是在示波器上看0xaa 或者 0xa0 0x0a 就不对。是什么问题?我用的是MAX232转的。示波器上看少了一个1。
能不能把整个过程,包括你操作的过程描述的清楚点
还有数据的收发
0x55 01010101
0x33 00110011
0xf0 11110000
0xaa 10101010
0xa0 10100000
0x0a 00001010
单对照数据没有明显的相同点
最好给程序段看一下
我曾经遇到过类似的情况,我是因为MAX232用的国产劣质的,失真太大.换块MAX3232,或者好点的MAX232试一下
是否没有发送完成就再写发送寄存器?
--------------------------------------------------
这个不太可能,pc发送是用微软那个控件做的。另外就算是没发完再写发送寄存器,
应该也是可以的吧?UART一般都是双缓冲的。不会出现把移位寄存器的值冲掉吧?
能不能把整个过程,包括你操作的过程描述的清楚点
还有数据的收发
--------------------------------------------------
void Serial::senddata(UCHAR data){
CByteArray byte;
byte.SetSize(1);
byte[0] = data;
mycomm->SetOutput(COleVariant(byte));
}
在示波器上从右往左数
--------------------------------------------------
少个1从哪边数肯定都是少。另外从哪边数要看是MSB还是LSB了。
我用的是MSB 所以自然是从左到右
我曾经遇到过类似的情况,我是因为MAX232用的国产劣质的,失真太大.换块MAX3232,或者好点的MAX232试一下
---------------------------------------------------
这个可以尝试一下,谢谢
一般来说,要避免用 示波器 来看这个波形,如果一定要看波形,该用逻辑分析仪。
示波器通常用来看很规则的周期信号的波形,用来看逻辑电路的波形是不合适的。
分析RS232的发送和接收,用一条交叉电缆在一台电脑上做就很方便