EDA365电子论坛网

标题: 串口c程序接收数据长度总是为0 [打印本页]

作者: niubility    时间: 2023-3-14 14:10
标题: 串口c程序接收数据长度总是为0
#define _CRT_SECURE_NO_WARNINGS
' ^5 H( T- m; Y% K5 q#include
- X) A1 b# C; z: M; X6 O6 x9 v" m1 B#include7 a1 x1 m( l- \
#include "tchar.h"& ?# b6 ]4 s0 ~$ [/ {/ S

( m2 V, }4 b3 I. E#include6 L( Y) Y- ^+ ?, U& P; r5 j
#include" a- Q8 V2 c% _2 o- G# K" b

( z) C% ], f0 U0 e4 j
7 a- ?5 D# ], e, p1 \, I1 a& uint mAIn()
6 |. M: i$ O" ~2 o2 I{
# E2 ^3 a% ^! x" b5 {                HANDLE hCom1;
$ k9 ]$ D6 ?" s9 A6 q; Q) \4 n  }                COMMtiMEOUTS TimeOuts;  6 K1 `( x. h. _1 K
                DCB dcb1;
  g# z$ u2 V1 }9 F" L6 @                DWORD i ;/ P1 Z( X3 D; l8 }- |6 d
                DWORD wCount =4;
# l. u' N+ P* f0 ]            DWORD wCount1;
6 {+ _2 e5 O: ^; h8 m0 e               0 |: i1 X$ p" |" X9 i% a
0 s6 h2 d: }! O4 x. f$ h
. Q  `/ O+ ]$ E6 K* y$ m( I
        unsigned char str[8];6 m; |2 i' K2 `7 o7 }6 d, d- K- C
                 : e5 G  U; N  n5 r
    hCom1 = CreateFile("COM4"," D' ]% Q% |6 d  S0 Q% L' z
        GENERIC_READ | GENERIC_WRITE,
7 J9 k: w- B* i        0,1 c- T8 m$ b: A4 D# Z
        NULL,
% Z! a0 [5 ~: t; I0 g1 ]        OPEN_EXISTING,
; |  q& N9 e& ?        0,
2 P5 S3 a$ [: ?7 ]9 n6 Q; L        NULL);
& R( Y2 z- d$ n* Z, J2 D* ^  U" B1 ^7 t+ E$ w0 F0 {
, ~1 k& ]% p0 D* u- D: B) R
        if (hCom1==INVALID_HANDLE_VALUE ). a3 e) C8 c/ `) b0 J) s) c4 |
    {
$ m8 s% `# _3 @! ]        printf("read open failed\n");( [. u6 D8 R4 x$ ?
6 x; G3 M+ d. _* s8 K
    }
! p! V% j, A7 P0 q    else
! t' v1 L% o0 |1 e  {    {
# T3 O4 }/ n) t        printf("read open successed\n");
' c6 `( k. i  G. l9 |4 r$ o    }
; q! ]% l# ?; i% X9 q    SetupComm(hCom1, 20480, 20480);
( S" ^0 y0 N6 X; |8 {9 m! Y# Q! N4 S3 L; h' j
    //COMMTIMEOUTS TimeOuts;  
- a1 I& G2 h' [# R/ f    TimeOuts.ReadIntervalTimeout =100;
6 e: z4 t$ ?* M2 w$ f    TimeOuts.ReadTotalTimeoutMultiplier =500;
% T# b" [# I( C6 e  S, k    TimeOuts.ReadTotalTimeoutConstant = 5000;   
# t6 e7 @. ^( T9 x3 u' m! G    TimeOuts.WriteTotalTimeoutMultiplier = 500;' H/ E; p$ M# w" \3 n
    TimeOuts.WriteTotalTimeoutConstant = 2000;* R8 l5 n1 v' N. R7 O; C( J; L
    SetCommTimeouts(hCom1, &TimeOuts);
0 _6 o1 r  o* ^) l1 e( L. y  L- e- S; T* Z+ E
    //DCB dcb1;
3 G. u) y- C* G( }8 T    GetCommState(hCom1, &dcb1);
  C9 W9 Q% f- R" P" g, U    dcb1.BaudRate = 115200;
2 t/ [3 d+ t) a0 ]1 c2 }5 E/ q6 B! b/ T    dcb1.ByteSize = 8;//一个字节8bit& K1 a. E* K8 A% @0 b3 p
    dcb1.Parity = NOPARITY;//无校验
( N- m1 r  o2 y2 [    dcb1.StopBits = ONESTOPBIT;//1位停止位9 L+ R8 M; l8 G+ y3 n* Y7 }
    dcb1.fParity = FALSE;; |3 m0 W" J' `9 ^
    dcb1.fNull = FALSE;
" P2 ^' X+ [& I0 q# o1 `1 p    SetCommState(hCom1, &dcb1);
! v3 R3 v1 |3 X/ N$ [- W. y, O! y5 v9 U8 ]' ]; [/ _6 z, o. F
    PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);
7 v; ^9 j/ Y+ w1 \! t
) x" P0 j0 l2 v; z  v! F" A
3 k# a9 v# T. D% M# A# I        if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))$ t$ }% L: [! W2 m* d/ [
        {
' h, P! ]' |# Y- K3 s$ K! [+ M            printf("read failed!");
6 @- C* y% ^9 \
! D6 U0 p) X% Y+ g2 b. s        }* ]. C0 D, q% T+ y6 i5 W: T
                else
/ B% Y8 l6 W" }2 R                {4 ^) ]) \- R8 ]1 J3 u6 F$ i
        printf("read successed!");
+ o+ F2 k) \+ g" e& {1 c6 M
/ ~5 a: A2 E4 ^( Q  O: h2 G
7 r& {8 n9 b+ j  A        printf("wCount1:%d\n", wCount1);
' K8 S1 q3 K9 r3 ?, I1 \  k, f8 o+ d( l0 J& W
               & B) B5 t4 J1 I9 F8 t! B- t
                printf("read data is");: }/ z4 V: Z3 T
                for(i=0;i         {# d9 t' {$ L1 [% G6 b$ K  W
               / F$ Z% d6 r0 r7 t
          printf("%02X", str);$ [5 e& U7 B# t
        }" y8 I+ ?+ Q8 U& E1 c
                }
+ Y. A' V' {' t* m" g) G; d  `  i) O) V% u8 F

: u$ }" V0 J6 v  a      9 a/ }! h5 c5 E' s3 S

1 |- w2 F  M# ~CloseHandle(hCom1);; l% R  S& n- K+ L

+ A' D5 r2 l8 y  D// system("pause");
* e- l7 n( Y; i: d: L4 I7 j& q$ V9 e* F/ Y2 f
}7 n3 u; {( B! Q" s6 h: {3 ]5 [
代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。3 A2 v  e4 ~1 C
( w' y: N+ q4 M3 d

* g4 c* b+ {7 o* c+ n
作者: zhi_hui_zhou    时间: 2023-3-14 15:34
先确定能不能发送数据和接收数据。
作者: Maskman    时间: 2023-3-14 15:58
想问一下波特率是多少,然后你发的什么数据呢?
作者: 风吹过后    时间: 2023-3-14 16:14
把它和发送代码合成一个c文件它就可以接收,单独的c就不能接收。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2