|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
串口c程序接收数据长度总是为0
0 Z, E# X' j: w" Z" p) t; I* V! i( H: O( n
#define _CRT_SECURE_NO_WARNINGS
, j( O/ E0 { N! F#include+ i$ a: k$ j8 P3 P
#include
; d& b; b8 ]3 n9 Q6 S#include "tchar.h"3 l% T2 r9 q: _, Y
7 y& J$ M6 K2 T7 B* W9 c
#include
$ w) I' n6 q9 c, w1 J#include6 k; A2 ~- F1 {, J& A( _: v
: f( Q! o) b, o: L
: x% P# q D0 S. \int mAIn()/ ~% o. f7 I% L6 [
{% L/ i' v$ b0 a! U9 V/ P# v
HANDLE hCom1;
5 ]% y* l( x+ m! N# r; h+ Q COMMtiMEOUTS TimeOuts; 8 D8 ]; r! ~$ W: z; w ?
DCB dcb1;# f( [" Z1 G' M' o5 r' v1 }8 q$ Y( `
DWORD i ;
: P1 C* E; w: S5 ~ DWORD wCount =4;) I0 K# n! H% r& B. N
DWORD wCount1;0 _; H! F. v" B
/ O* T6 c" s6 z/ j4 t' N& w* G$ A' c
- {* @, G7 m: f% g
( G V/ @. T; t6 _6 `4 c, e _ unsigned char str[8];8 I) s& {0 H# S$ F* v8 o. B( x' j5 C
6 t" E: N' Q$ {) s hCom1 = CreateFile("COM4",; m! d l/ U) Q! f
GENERIC_READ | GENERIC_WRITE,5 l2 V' ~8 |4 V; G! o+ M
0,$ ]! a; w: p' ]3 B. o+ u m
NULL,
. y" t+ V3 ~; u' L3 ~( g. j1 `; s OPEN_EXISTING,
& |; ~& Q; Z$ K1 d 0,
* v* E8 g* ]1 Z b8 O+ R* l$ } NULL);
7 X; V/ Q! R# e5 C: O4 T0 ?2 T
# p7 M& k% I3 @% Q- T. {6 O
) C t2 x' c4 A7 l4 T, l8 E if (hCom1==INVALID_HANDLE_VALUE )
) r( g8 @3 _7 x" x* ~5 {& Y {/ Z. x! M6 t: U2 T% [3 ~
printf("read open failed\n");4 ] x0 _4 H: U# o- Y- z
$ p1 \+ S% O, D }
/ P; C& l1 Q# { else3 t0 r. t' ?; X- c
{ h( |. p, T% C
printf("read open successed\n");6 K1 ^4 B/ t9 n: B' @- n: v) g
}& h% p# v2 @6 c- h
SetupComm(hCom1, 20480, 20480);
& L; `- b" o! g3 g$ D9 a
7 S% u' I: c M" f, c+ B5 n //COMMTIMEOUTS TimeOuts;
, `1 @+ i4 @" |* Y TimeOuts.ReadIntervalTimeout =100;' a' F2 M& z! B% J2 L
TimeOuts.ReadTotalTimeoutMultiplier =500;
4 U: ]+ P; ?- O6 q TimeOuts.ReadTotalTimeoutConstant = 5000; [) `. p; ~; r ^. O
TimeOuts.WriteTotalTimeoutMultiplier = 500;# M. E/ y+ q; D+ ~. z
TimeOuts.WriteTotalTimeoutConstant = 2000;% k+ i7 D6 E- L) K0 W7 L3 W" K
SetCommTimeouts(hCom1, &TimeOuts);5 X) f( K3 b S, X, [/ Q f
% W) G" v! d! o D4 L //DCB dcb1;+ n' t. U9 I ^+ f4 s. y4 |
GetCommState(hCom1, &dcb1);) @! }5 R; f# Z- n% k
dcb1.BaudRate = 115200;7 V7 k/ ~2 I) E9 y& V! k
dcb1.ByteSize = 8;//一个字节8bit- B, o" u& Q- o* }7 l- V6 s
dcb1.Parity = NOPARITY;//无校验
' ?( k, I# }) ?, X7 G7 v dcb1.StopBits = ONESTOPBIT;//1位停止位5 B, W! W' o+ _* j+ I
dcb1.fParity = FALSE;- F# h! k" ], c% V5 a+ a
dcb1.fNull = FALSE;7 V5 n1 @. n @0 a4 j
SetCommState(hCom1, &dcb1);" F& s% ?3 V8 G: m$ _# j7 R: l$ N
1 l0 P. l3 K7 u% D
PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);! c: B- j1 L2 Q D
( W$ s; o4 D) O2 O5 ^7 C) Y
% Z6 }; k2 {" ] if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))7 [) P8 [/ n; I" Z
{
! I, B; w3 D2 t, m printf("read failed!");. l/ ?& G9 l) Y1 z @3 E- {
7 R! A( L5 {* w; b# M4 o: s, j
}
2 {4 B; [" W% ]9 t) b" v9 ] else( M( l/ @# D9 I" n+ I
{
' ^2 L [( N8 z. ?( R2 Q! d* I printf("read successed!");
; B( ^; O. b! F! R- W* P& k8 j
6 G* H1 R! B5 N3 G& f# {
7 M5 W* a. M7 A' e7 @% y8 K printf("wCount1:%d\n", wCount1);
7 w6 u3 K, ?; i9 Q8 j4 q& o
: s( ^# k3 D- L6 Q+ }
! r3 |- P4 p: K- [# {5 ^& o printf("read data is");5 {5 y9 W/ U# |3 f
for(i=0;i {
! @0 n9 v# }" m7 ?5 s: R 5 T) d8 _) R, U
printf("%02X", str);$ }4 E; S5 X* D4 S# L
}
0 e2 G4 x4 E* o! D' Z }+ f: q% t2 |* I- C& d8 w4 R ]
& k: r7 F0 b% u h2 c! `
) _' _8 r' l& ~1 }6 U6 y' }/ E
/ a1 c8 l( u9 m n: ^
7 C" [9 K; _! y5 ~CloseHandle(hCom1);; O- R2 Y0 o. b8 ]% t4 f
e( f( l5 Z% w// system("pause");9 a' p, ?6 K; B2 ^
" J7 C0 l( @3 w0 p9 P( B
}' c' d, v3 I* K/ U0 G& N5 R( N1 k8 e& B; O
代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。 |
|