发新话题
打印

串口编程求助高手!!

串口编程求助高手!!

希望高手指教!, `* 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:      

TOP

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

TOP

应该是成功了啊,, R% P2 ]! j% C! s
tcgetattr (rs232Fd, &term);
! U/ [6 w0 R1 F) s1 `$ y3 t" |. d/ Ecfsetospeed (&term, B9600);
& ~/ h1 ~$ V4 a/ n- d$ p0 W4 dcfsetispeed (&term, B9600);
  `2 l# X: v5 I/ H- z
/ x$ n; U  K* K6 M& n: `6 ?term.c_iflag = 0;
. M1 x0 h. y+ Wterm.c_oflag = 0;- Q# J: [$ u9 s% \2 j% t' m5 C( u
term.c_lflag = 0;/ N  f; V5 W$ }. S2 F, z
term.c_cflag &= ~(CSIZE | PARODD | CSTOPB);
3 G) `. F' v3 [) vterm.c_cflag |= CLOCAL | CS7 | PARENB;
, ]) M( _$ z" V0 O& x: Fterm.c_cc[VMIN] = 1;- X1 Y6 c; |$ H3 H2 }/ X- J' @
term.c_cc[VTIME] = 0;
$ C  V, W/ r5 k4 d' @; [
. x: I/ g( w% e6 |0 l: Q在以上代码后的代码里
: O  k  S( M8 ^& w4 j if (tcsetattr (rs232Fd, TCSANOW, &term) < 0) {+ y8 c. W" K/ {6 l2 Q
  printf ("COM_open failed to RAW mode!\n");$ K3 r; B% Z' B0 o& n: g5 Y
  close (rs232Fd);
( t$ W# j8 j. I5 k  z9 U  return;
; _- Z2 q9 t, r, H- R }% E" w/ L' m  d  O  E6 S! u
没有打印错误信息啊5 a- H2 t4 ^" |+ c
:confused: :confused: :confused: :confused:      

TOP

怎么没有高手啊?      

TOP

发新话题