串口编程求助高手!!
希望高手指教!, `* i5 E5 y" g
我在一块linux系统的板子上做了一个写RS232口的程序(linux)# j, F% K; o1 r' M$ \! U
设置了串口的属性如下:(rs232Fd是串口描述符)
5 s- r5 T e$ y M5 O+ R a+ W4 L/*波特率9600,偶校验,1停止位*/- f; X1 ~+ w# A7 f4 p
tcgetattr (rs232Fd, &term);3 Y, |* g) H& W! Z. l5 e0 r
cfsetospeed (&term, B9600);
% ~% n i8 w0 z# L$ pcfsetispeed (&term, B9600);1 L/ Y# n, W8 [' ?( A& n# A
% w3 q+ f$ h% y/ e) ^$ U
term.c_iflag = 0;7 N# h4 g* c8 b
term.c_oflag = 0;% h7 Z E9 T/ {# B+ V+ ?
term.c_lflag = 0;
( y" x; W# _* S: y* U* X A pterm.c_cflag &= ~(CSIZE | PARODD | CSTOPB);
8 m$ m- s3 Z/ h h) ]( B2 x% a- pterm.c_cflag |= CLOCAL | CS7 | PARENB;
- ^3 W5 \2 d o5 e/ g1 H6 wterm.c_cc[VMIN] = 1;
+ B: ~$ [0 |- |- G1 j& n' gterm.c_cc[VTIME] = 0;0 [8 o" p' {* J) D. N3 ~0 f, `, \
用串口调试助手接收,串口调试助手的属性设置为9600,偶校验,7数据位,1停止位,此时接收成功。
, q6 ^/ }1 t3 @可是,当把发送程序的CS7改为CS6.CS8....,或者把发送端的校验方式改为奇校验,或者改为2个停止位时(串口调试助手的属性不变,发送的数据固定),仍然可以接收到正确的数据。
8 T, P; Z0 F8 P5 C. T( r/ N" W
* L. B1 v. @* G+ a4 N$ P2 {哪位高手可以指教一下,接收和发送方的串口属性不一致,为什么还可以收到正确的数据啊?
! B7 {6 {3 P; G0 n$ A% r我晕了:confused::confused: