|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
串口c程序接收数据长度总是为0
; D5 [, \# t2 A1 O
1 O. r; R R2 k+ @; _#define _CRT_SECURE_NO_WARNINGS) ~4 E' V% S8 v( S) p
#include
! n' D% w: X/ G. o% n) q#include9 ~) d( o2 {2 m5 q/ F4 J
#include "tchar.h"
4 r$ l5 x) B+ Y+ P; g' o! j) N: \6 f! u; L$ w2 L$ C- A% v
#include
' Y% N4 r& Z W- T( o( u#include" p6 |8 O+ F3 Y8 O F% I$ q
# V* q2 V4 i4 ~5 V3 L1 m* N
7 Z8 t; b( ]) l& T Q* R+ Uint mAIn()
0 v5 M( s* f- u2 _/ c: k7 Z5 \& N{
! j% h. d3 D, u' J HANDLE hCom1;4 b# `+ W/ c# a/ U+ f6 P5 x( k
COMMtiMEOUTS TimeOuts; 9 J) ]/ j; J8 q
DCB dcb1;
! b: C3 i. P- S2 ]$ ]& B& C3 p DWORD i ;2 E: N$ u x6 U
DWORD wCount =4;: O5 E/ c9 h9 Z0 o+ e0 z5 G
DWORD wCount1;% _# }' k! e7 b
; D* {0 x& y+ U$ p( A) F
. y( {; d3 y6 U7 Q/ E, O& G
1 [* |4 X) s% S! V' o( H6 O# D4 h unsigned char str[8];
" m- j+ b6 L6 T
% d9 j$ `# X4 }3 k( F9 m hCom1 = CreateFile("COM4",' I, j+ g! U$ M. y. B/ s' O
GENERIC_READ | GENERIC_WRITE,
# ~5 t% K. U' G" S: X4 @$ @ 0,' c5 [5 ^, q$ S2 V$ _
NULL,
. h% m' m d5 R; U/ v! M OPEN_EXISTING,4 Q# a. ~5 E6 @6 I- d
0,
/ h" x$ O) J6 O" a, \3 m NULL);2 I( p; Y% o) ^, c1 s/ l$ a1 b
% n% T; V2 O: }0 ?# V& D
/ ^& H2 \8 k& }5 }: r if (hCom1==INVALID_HANDLE_VALUE )
* ]$ [2 E* B: S( H6 A {
( ^+ K2 `! Q0 U+ p printf("read open failed\n");1 L1 Q, K1 U j" l
% l" K2 |, n% q8 E% E n; s }
\: V6 ?( p3 [) d3 _ else
' L3 t1 _ n. _5 q0 G/ v/ F# p {0 K5 I7 O9 Y- [: Q. E# s
printf("read open successed\n");6 P9 h1 E+ \6 `. \! F7 g( \6 w7 t
}- m1 F0 W( Q f6 N: H6 @
SetupComm(hCom1, 20480, 20480);# k. Q: ^5 ~9 E h% p$ o
* N9 n3 x+ J% x* _6 |; I" \ //COMMTIMEOUTS TimeOuts; 4 x. a% G: h7 r/ j
TimeOuts.ReadIntervalTimeout =100;
, W+ `: k; V# D. r TimeOuts.ReadTotalTimeoutMultiplier =500;
1 o+ n& |0 S" x c TimeOuts.ReadTotalTimeoutConstant = 5000; ; P: T! o. A% K" n, \& L
TimeOuts.WriteTotalTimeoutMultiplier = 500;
; e% B6 O M/ y, q TimeOuts.WriteTotalTimeoutConstant = 2000;
* u: c4 }5 v H$ Z' E SetCommTimeouts(hCom1, &TimeOuts);$ B) u, [+ ]& R' G( t
3 `* z. M6 l9 ^7 j% L& C& g: S //DCB dcb1;
8 W* P, u+ R6 @" J; f GetCommState(hCom1, &dcb1);( r M3 Q# W4 y* D; ?
dcb1.BaudRate = 115200;
( l) G9 L: T8 Y0 x dcb1.ByteSize = 8;//一个字节8bit
' g9 Y% V4 z0 H* H; }; x dcb1.Parity = NOPARITY;//无校验
- n1 k; j2 w+ e- f' L dcb1.StopBits = ONESTOPBIT;//1位停止位- V J; S8 o. T( V
dcb1.fParity = FALSE;
1 ]5 H2 f2 g5 R7 R9 b dcb1.fNull = FALSE;
8 S; r1 O& G n. }0 H2 Z) w) X SetCommState(hCom1, &dcb1);
. M7 H/ H5 C- k5 f& I: K( {6 T# g) m7 Y
PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);
g9 y' p( F( g) {# t) v8 K
2 d( }5 u- w* F$ ]7 f g9 @4 ?( l2 Z, A
if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))
9 a: ^6 W% f4 X8 O, {- A# w7 S: { {; A; k4 S b, t: R: @+ W+ \
printf("read failed!");- K8 M- Y, x9 X$ t6 Q& W
3 ]. [% x5 x9 K }
) s. W/ x# h" @8 h" b; e! f s) N else: Y ~* p5 V1 u2 E( K9 W8 J
{" }4 m5 W- o, n) b/ U
printf("read successed!");" n; `/ O) \; x7 |% u; a, W
0 I0 U) l- l: ]; d4 u
x% x4 N4 _8 U2 G- V printf("wCount1:%d\n", wCount1);
5 m- b6 ]* T2 ~) `
+ D* n0 ^5 E8 J6 ]& ?; e; t0 @ . N" M* v6 C [: Z
printf("read data is");7 j0 U; L, @+ m
for(i=0;i {
9 ?$ d4 u8 m% f& w - k% Z% T7 u2 h
printf("%02X", str);2 P; S6 G$ B4 W2 E# B1 Y2 v! s
}% Y/ e2 o( d$ @( O! x) w+ d
}, F! ~( q0 T8 O7 e
) F* M9 T& w) V% R0 C) P
6 I! M! G! m) V- H$ y+ |# R$ X5 ?0 u 7 N% n) I; y9 ~$ F* j1 Z6 J
+ G7 R2 b, T$ u) l- i( g) [
CloseHandle(hCom1);/ \ |# m& I4 P: Y: H7 T9 d1 m! p
: E( S$ f, x" d) ?. `4 _// system("pause");, J0 \- u( v6 I$ q
T# o6 l) C4 |, p
}& O& l0 B3 l6 \ R9 K, N! {
代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。 |
|