|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
串口c程序接收数据长度总是为0
4 F# A: L. J, s* s
) g! I% l. ]2 e$ D" w#define _CRT_SECURE_NO_WARNINGS
; e; R$ w9 Y1 B, E1 {#include% L$ @7 G: @- N0 _
#include! n; Q7 i1 D" |+ t
#include "tchar.h"# i* R2 P( `2 g( M
& {' n" ` i) A5 }! `, U) u#include
# F) b- E: L$ `, m#include4 N1 E: B6 f# d
D: L' C( i9 p: S
$ i) Z4 q0 d! rint mAIn()
0 b( s& ~7 s. L{
( Z7 g5 v$ Y6 Y7 J+ V7 c1 @; @' S HANDLE hCom1;
- b. e _* v( V; M* U& s COMMtiMEOUTS TimeOuts; * I" m( |1 g# l: l9 ^! j
DCB dcb1;3 Y* ]2 P$ F$ X2 K
DWORD i ;' d1 f4 Y( p: u$ f0 g" q, d
DWORD wCount =4;+ G5 ~0 y' j: Y6 M5 n$ E3 h8 j0 f
DWORD wCount1;! g4 }1 W- H" e6 E
+ a% G% ?! j) R/ b( m: U/ B* j7 j% Z6 ~+ D
+ {/ g, X9 k5 y# Y5 b unsigned char str[8];
. g- p8 H& |" l- Z( k
( d( l! E) k5 i$ G hCom1 = CreateFile("COM4",: {! R) E$ }2 f+ ?$ j' A/ d. L
GENERIC_READ | GENERIC_WRITE,
+ i7 `/ J4 n& T2 ^ 0,
, |9 p- A6 ?; D' F" E, h5 h NULL,
8 D% w* o: `. m+ s) ] OPEN_EXISTING,/ z, o; x, D* s
0,2 X6 F) W7 B1 ]% R, J
NULL);
- Z! v* \/ s* \' h9 a
6 B5 q' T; W: D! X
. p# N0 [# O: u4 y2 {' r if (hCom1==INVALID_HANDLE_VALUE )" k/ P* L5 s5 J7 E* Y# P6 `
{
1 z0 u1 Y4 m( o: _( O$ U printf("read open failed\n");8 M5 m/ U0 Q' F; f9 D2 A
$ G( Z+ y9 r- `& ^: \7 y
}! K( b' j5 D+ G/ ~
else
7 r0 l9 i' W: ^3 u! | {
2 w: o/ R0 S, t2 w0 a3 k1 ` printf("read open successed\n");
1 \) S5 r. B$ k% h }3 t4 n+ `- j$ C3 n8 c
SetupComm(hCom1, 20480, 20480);) Y, y9 f. v) B( z- N
0 u5 q" R% E+ E2 l //COMMTIMEOUTS TimeOuts;
, f4 I) N( B: o$ x TimeOuts.ReadIntervalTimeout =100;* b% a2 P! H& j8 l. X7 ~9 m. ?
TimeOuts.ReadTotalTimeoutMultiplier =500;% S& d/ Z3 a0 F% X L$ R
TimeOuts.ReadTotalTimeoutConstant = 5000; ; d1 o; M/ \" J, |' a/ u/ X' x4 Q
TimeOuts.WriteTotalTimeoutMultiplier = 500;
: B8 l) C- J& Y T TimeOuts.WriteTotalTimeoutConstant = 2000;8 j( G& M+ P# f$ p7 N L" g
SetCommTimeouts(hCom1, &TimeOuts);
3 s( y( \1 {- x+ A3 B9 g% N N X* I( G" B
//DCB dcb1;
: [% ~+ ?+ {8 l) k, f; r5 {5 p GetCommState(hCom1, &dcb1);
2 _) a4 V) q* s' U) F; t& E dcb1.BaudRate = 115200;
# U( [0 s* _. \5 T2 G' a5 o$ f dcb1.ByteSize = 8;//一个字节8bit
; n( F3 @) K' W dcb1.Parity = NOPARITY;//无校验
5 _1 ]1 s; N/ N# F- K dcb1.StopBits = ONESTOPBIT;//1位停止位$ t% r- z& R1 O8 E8 L
dcb1.fParity = FALSE;3 r* Y+ a: G4 `- v! P
dcb1.fNull = FALSE;
* a# \! ^9 W5 R# ^, S# c. x6 N SetCommState(hCom1, &dcb1);" @8 M: T$ d% U* u$ x1 Z
$ w6 S. ~( ]& m" ^ PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);
- V7 q) f5 J5 ] _4 @: f$ q* N2 j+ M; o; c; g
, Z8 X' z" |+ B6 ?. M' h if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))( I8 o4 P6 T4 j) Z8 B* Z
{
) ~( }7 W3 W, y% k2 ?( _ printf("read failed!");
& d4 c' a0 b1 `. S5 J7 {
9 a4 X5 d8 E! M! o. _1 f }9 X/ G* ]' A( S% h% J
else( o3 y9 v8 t, h4 u/ }
{
3 h+ t" h1 J+ m8 [ printf("read successed!");
+ H. I. {, K, x9 F: M1 Y* d) ~4 P+ ?5 F* u
; F. V1 s% H1 K- |' i! [8 M8 ^$ l0 m
printf("wCount1:%d\n", wCount1);
- S# Q& r( `+ M- Y
9 @9 X/ S6 x2 i3 N6 e
# j' r, ~8 D+ M, t; a+ F3 A2 x1 M printf("read data is");
( a+ X, a3 M$ Y# Y for(i=0;i {3 E% S# H; Q5 f! a
. }4 F5 Q9 F+ ], L5 e3 e- ?% ^) t5 a
printf("%02X", str);
: v, c/ `4 e: D+ g8 h! H }
, v' m8 L( e$ g1 |+ I! t) ~8 r w }7 o7 \- d7 t" G, y z8 {7 m
- [4 P% ]# ~( `5 V0 D9 C5 z% p9 T. c2 m# b0 M! {
2 C1 N' x& x2 C, n" R0 r7 M5 w, X! l; f c
CloseHandle(hCom1);
- n' s% t4 o5 l8 x- |4 u6 R, i& R3 [5 H0 \" w# |" O6 o W
// system("pause");
# _6 d( B% }/ r" a) b( l$ Q. u9 j2 ?. U* R( F3 U. {5 ? a; z8 c
}" V! g% z; ?2 Q: ~4 |
代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。 |
|