发新话题
打印

串口编程求助高手!!

串口编程求助高手!!

希望高手指教!
7 `% B- c# j7 D: W3 R我在一块linux系统的板子上做了一个写RS232口的程序(linux)" o* B2 K' @1 k; U6 o
设置了串口的属性如下:(rs232Fd是串口描述符)' R7 D0 G% ^( s: n  N
/*波特率9600,偶校验,1停止位*/1 T: k. u  K7 W; a- q& Z
tcgetattr (rs232Fd, &term);1 z% u1 a7 V+ `3 [5 x! L0 c
cfsetospeed (&term, B9600);& G8 u% f% `' W3 Y! u0 J
cfsetispeed (&term, B9600);
* _) R$ L+ d3 s) ]          K! i- X5 q* q* k) f  n
term.c_iflag = 0;
8 z0 q2 Z2 L* G, U# Sterm.c_oflag = 0;" ]8 `- q) J) D# Z- T
term.c_lflag = 0;1 @% z  t. R4 F- }5 G
term.c_cflag &= ~(CSIZE  | PARODD | CSTOPB);
' k3 H% `1 A* ~+ P- |term.c_cflag |= CLOCAL | CS7 | PARENB;
' j: I1 P# \# F! Wterm.c_cc[VMIN] = 1;
" Z+ E3 n! C  }/ Bterm.c_cc[VTIME] = 0;$ R" A2 O& N  _4 K6 h: y
用串口调试助手接收,串口调试助手的属性设置为9600,偶校验,7数据位,1停止位,此时接收成功。" G! G, h; M8 ~3 b  U4 T* V
可是,当把发送程序的CS7改为CS6.CS8....,或者把发送端的校验方式改为奇校验,或者改为2个停止位时(串口调试助手的属性不变,发送的数据固定),仍然可以接收到正确的数据。  W* }$ i4 Y/ X0 [6 L

% [, F" t' c8 H4 v1 E% s5 m哪位高手可以指教一下,接收和发送方的串口属性不一致,为什么还可以收到正确的数据啊?
4 p* J/ H9 y) j! P# {我晕了:confused::confused:      

TOP

完整代码?确定设置成功了?      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

应该是成功了啊,
, f* E  G  A2 e1 ktcgetattr (rs232Fd, &term);; E! i0 W5 B5 J% _& |- r; R/ l
cfsetospeed (&term, B9600);5 N' M% O7 D2 f6 o9 v- e
cfsetispeed (&term, B9600);
+ a' |8 U6 J" h4 z; ?7 o& N9 V+ p3 S- J5 h! x# F4 r: ~8 C* Q+ @
term.c_iflag = 0;2 [2 R0 ]$ ?, u# R( \! C' H% _
term.c_oflag = 0;
/ o$ F  W" G; }term.c_lflag = 0;; U# Q& ]. S6 W5 n1 f
term.c_cflag &= ~(CSIZE | PARODD | CSTOPB);
4 Z5 `/ M; o+ x  \' ^+ Nterm.c_cflag |= CLOCAL | CS7 | PARENB;
8 ]; x4 z$ p9 T& Y6 xterm.c_cc[VMIN] = 1;
0 f- B; L6 P  C9 ?7 r+ T7 Uterm.c_cc[VTIME] = 0;
# n% T8 l6 N3 ^& S0 F  q
2 B  y0 x% z  n5 s在以上代码后的代码里
* u+ k* v. T- F* h" _& Z9 j: C if (tcsetattr (rs232Fd, TCSANOW, &term) < 0) {
0 ]5 Y8 _( u( e) T* _  printf ("COM_open failed to RAW mode!\n");3 n; K  R9 V- D3 c# R) L4 q
  close (rs232Fd);7 V/ Y. c7 ~7 j4 F% T1 J* z
  return;' e$ P" ^" j. [9 M5 [% p2 d: n+ N2 M
}
3 M6 P! d+ D9 S: I7 P没有打印错误信息啊9 g5 t" A& V' Z! p5 J6 |7 d6 q! V
:confused: :confused: :confused: :confused:      

TOP

怎么没有高手啊?      

TOP

发新话题