|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
串口c程序接收数据长度总是为0
& Z9 \# N: [2 @3 Q5 x: w5 T% ~0 S" I$ b& q
#define _CRT_SECURE_NO_WARNINGS e/ J5 h l# t) C% c7 x0 l5 A
#include) ]5 |0 F' Y( V& {; T4 {6 {
#include3 I/ W4 V* Z) U+ S8 q
#include "tchar.h"
$ C& b+ N2 q' U5 b5 R" h7 i& s% P3 o/ u0 s5 \7 _- i
#include
; S. U, G( x3 _0 e# P8 c' R#include
5 i! v: L$ R! }5 h4 H B8 R' k$ r! L* A. U
2 I1 H" l1 L0 H# m3 d4 |
int mAIn()* ^! ]) S+ S: x/ J4 h/ m, I
{$ A8 T. L* U6 Z" j
HANDLE hCom1;
* C* B, ^# z1 P" I) l' R3 s COMMtiMEOUTS TimeOuts;
3 _' R6 ^/ K# q2 B DCB dcb1;. w! g \+ O2 D+ a1 h
DWORD i ;/ q" Q- i. n: B# t1 l
DWORD wCount =4;; H( y& @+ s* S
DWORD wCount1;
/ j( g8 O5 d7 V, i7 M! ^
* u# x# K% B" W, a! c* ^" K o* H
: O4 Y) H5 T5 Z( F* U/ k% h; A ~2 e! i6 b; v" V
unsigned char str[8];4 ~* S. d8 D; A, c, `
5 w- u2 Q0 g- @ `
hCom1 = CreateFile("COM4",
) Z+ a. z1 u. o. E9 p. h* r GENERIC_READ | GENERIC_WRITE,
" H( j0 `6 t7 z8 T. u1 U7 Z% x9 b# V 0,
6 c: R$ C( H+ J4 y U9 Y e NULL,/ `0 V" G: m. Q- V' A1 y6 k
OPEN_EXISTING,
( p- _% _+ t U8 g# U 0,
! p" d) e- W6 o5 S# |& p' ^' F NULL);
% p3 s7 c9 J7 ^8 s7 { S* `2 p: `$ _" L/ w
* J- ~8 U3 s- ^4 T7 v, E$ G if (hCom1==INVALID_HANDLE_VALUE )
7 n4 q# T* C4 b {& p% d: ]0 t; J; v
printf("read open failed\n");
/ ? N' V3 @; m" }. N D6 D& _& ?& Q# x N6 v+ P. I* Y6 a+ F2 a
}
b, D3 j5 r: \ else
& F& v( x+ L* ]6 Z$ [1 H7 e7 |( U/ b {
4 C7 z: a% \' H+ B2 P+ a printf("read open successed\n");
* P: [7 G5 p6 \' v2 W+ h |) o% D# U2 X }
k# r) V5 g' P! ^6 c- M% Y1 H SetupComm(hCom1, 20480, 20480);
, |, m5 k+ z7 {
0 E& V1 H. b' r //COMMTIMEOUTS TimeOuts; v3 U( O9 f1 ]+ }
TimeOuts.ReadIntervalTimeout =100;
. |; M# ]/ g. ?, L: f$ P$ b TimeOuts.ReadTotalTimeoutMultiplier =500;
7 B0 y7 ~( j- {) {2 C! P% h* { TimeOuts.ReadTotalTimeoutConstant = 5000; 4 |0 R! h0 }% l! N( H
TimeOuts.WriteTotalTimeoutMultiplier = 500;; T% {, Y( D- k3 T
TimeOuts.WriteTotalTimeoutConstant = 2000;
. ]) M9 x4 z. l- O: V SetCommTimeouts(hCom1, &TimeOuts);: _/ E' [* y9 k
# u) G! l7 H. `+ e# E: R$ [
//DCB dcb1;2 K! G8 F8 ] d
GetCommState(hCom1, &dcb1);2 Z+ }; z" V6 G e5 ?
dcb1.BaudRate = 115200;
/ Q3 J+ h) A) Z8 x& r dcb1.ByteSize = 8;//一个字节8bit& Q) E V, ^3 O& q
dcb1.Parity = NOPARITY;//无校验9 p' Q. j9 H3 o+ `. `# d' b
dcb1.StopBits = ONESTOPBIT;//1位停止位( ?# s& L, N* K# B5 c
dcb1.fParity = FALSE;9 m" U/ x I3 f6 [8 Y5 c5 j
dcb1.fNull = FALSE;+ Y8 Y0 i; y/ P$ e
SetCommState(hCom1, &dcb1);
2 d: W+ T% Y. D1 i0 x7 H$ N+ G
+ I: f A4 G8 R, t PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);5 \0 f" [5 _# [$ {
. S6 L" y5 Q, z$ B$ ~' {- x, x6 n$ r y7 ^; [6 B: ]0 d
if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))
! D& i" C- `& }5 ]! O+ I {% E3 X$ A- Q8 j; p7 I( T3 P
printf("read failed!");- k; V" A% U8 M+ v0 n
2 R3 o2 j8 A, X }
8 X2 B8 T- t9 C+ o/ y& D5 M else5 U, e# U, d" M1 w2 N
{
" @% q% q& l+ o8 c% V printf("read successed!");
4 G5 S' I$ {# x- C v
3 I0 s7 L* j5 F
2 u4 A$ B& p8 Z, r9 b0 P G9 W3 T& v r printf("wCount1:%d\n", wCount1);* ` a1 G% W; Z0 i2 p+ T) l
) ?, \/ l3 {( ?% ~" b - E& O* {" N/ K3 t6 p6 y5 s6 R* x. G% N
printf("read data is");
; ^- p9 @! K# x; P2 X F; C5 F+ I for(i=0;i {
" {# }/ w# _# @* |* Q; J % D3 Z6 {, N" K5 _4 P
printf("%02X", str);* Y" d: y' S; _/ \& c
}
& D6 U1 {& k% A5 y6 N }
: F3 |2 x F) x3 }0 c6 s6 j5 W$ O# U+ x3 p$ B& d- p
8 n. V' y1 W1 y: s
6 u" E* V# O K4 _8 _4 z& K+ N& t
, R5 F" a. x# n$ U7 ]0 MCloseHandle(hCom1);0 f# b* _ n2 X0 G' W8 v7 T
0 M! C2 L4 i0 Q8 b6 }
// system("pause");
# w' t" O6 P" ? W1 r; E
6 Q' L# G- v( h) }% u}
3 I t" W8 B/ ]% S' C' F) i代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。 |
|