找回密码
 注册
查看: 277|回复: 3
打印 上一主题 下一主题

串口c程序接收数据长度总是为0

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-1-31 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
串口c程序接收数据长度总是为0
: [/ `/ p# g' Y! p) n$ \; s" x* ~! F
#define _CRT_SECURE_NO_WARNINGS
& z+ N6 a$ ~: b, |) @1 C#include1 `1 r) k0 Y1 d1 ~# `
#include+ M9 z  X; A# c% \, X; G5 A
#include "tchar.h"
9 f- q( ~) k! v* l  L
; ]- ^2 G4 u: U#include
$ R9 i0 L7 T, d7 d- j- f1 h#include. \5 h- R7 @# J5 A: C2 p, p4 Q* Y3 _

' q5 `! A0 ?$ l
9 p7 K! o. k% P9 F6 _9 _int mAIn()
( f" S+ E! x5 {{
' f! X* ]! \# @. O                HANDLE hCom1;. v2 D2 t( ~, f  j  {- f, g
                COMMtiMEOUTS TimeOuts;  ) a! s" w, l" G0 h$ G
                DCB dcb1;
6 ~) ?( a+ ?: n                DWORD i ;
% w1 C7 i: [5 p: M4 r$ p/ O                DWORD wCount =4;! @% m+ K% [- M3 C$ T
            DWORD wCount1;
9 b& d6 W- A4 S) e  \4 C" k               ' J; Y5 T6 Z3 S' b: z
7 w0 h0 a% Y* o, o  z

, ~' g3 I6 z* P& ^5 ?1 R, G        unsigned char str[8];4 A0 `1 y) X' R! }" A
                 
8 X6 a5 V# |, `% V7 }    hCom1 = CreateFile("COM4",
& J; g" U2 [% r/ T- y1 ~8 E. H        GENERIC_READ | GENERIC_WRITE,
& H0 V0 B7 a$ N' R4 V  |# P5 F; G  \        0,2 x: _1 l8 r) j; @: S
        NULL,3 t0 G; d2 ^* y+ r
        OPEN_EXISTING,* u3 d! \  c" j1 j. f! F
        0,4 N5 ^- j: W3 z) L2 ?$ ]& F
        NULL);2 U) _9 J* P/ ]$ @
' T3 b. U' K1 Y% j9 ]. _

- x& g/ q% L7 F1 V7 A% M6 R* w        if (hCom1==INVALID_HANDLE_VALUE )6 ?0 \* F2 f1 a" H( z* X6 `8 |9 |
    {
. a: f% y: t' H: o        printf("read open failed\n");6 B6 ]: u. q- b( U% Q9 F; x
) I  C2 u/ B: q5 y# v$ L+ A
    }, \6 |# n# S' f) J  ?6 z/ {$ `; x
    else. S* n4 P7 e: {3 l1 f
    {
/ O- r+ e0 Y# |$ L5 S. H+ c        printf("read open successed\n");) k# {8 s1 E9 }9 _" K& ?) B  l
    }
3 o) |( L+ V8 Y! f# I, l/ G- z" }    SetupComm(hCom1, 20480, 20480);
4 b' L3 J; T6 L+ N2 k7 A/ J, c% D% [% J0 b
    //COMMTIMEOUTS TimeOuts;  ) }- A+ c. _6 B9 P
    TimeOuts.ReadIntervalTimeout =100;
9 y+ i$ _* E- e6 _! m/ I9 z    TimeOuts.ReadTotalTimeoutMultiplier =500;0 G1 Q& V/ j/ Q; v$ j
    TimeOuts.ReadTotalTimeoutConstant = 5000;   
9 g3 S5 ?2 d- S8 S    TimeOuts.WriteTotalTimeoutMultiplier = 500;
+ Y- q$ x/ l' V$ B, N% c/ E    TimeOuts.WriteTotalTimeoutConstant = 2000;2 G2 Y, O7 N) g. R% I
    SetCommTimeouts(hCom1, &TimeOuts);5 T4 l7 [( E# [1 c* H* i5 V

* v/ z1 f( H: e1 K4 n! t' Y; `  k2 s    //DCB dcb1;
( ?, @1 ?* ]3 c* I- o    GetCommState(hCom1, &dcb1);
5 H' H! N4 @; b6 N0 b/ v: q% k    dcb1.BaudRate = 115200;
. D+ b9 H6 f* F/ n6 T    dcb1.ByteSize = 8;//一个字节8bit
9 t- v! Z; z3 f- t3 S    dcb1.Parity = NOPARITY;//无校验
# m4 q8 O! I* U9 L    dcb1.StopBits = ONESTOPBIT;//1位停止位$ P+ k2 A5 @  O8 t+ l
    dcb1.fParity = FALSE;) b) Z% q/ L1 e5 K' q
    dcb1.fNull = FALSE;
% v" D5 g3 z8 H/ p6 I0 X    SetCommState(hCom1, &dcb1);6 g1 Q3 E7 Y( |8 f9 Z" p- _

0 N. U+ H- X1 q    PurgeComm(hCom1, PURGE_TXCLEAR|PURGE_RXCLEAR);
3 M' @( k, x+ [$ d/ _
7 `1 \- g& `  C; n9 v" S4 Z1 V# l5 ]! O1 K9 s, y+ e; \
        if(!ReadFile(hCom1, str, wCount, &wCount1, NULL))
, Q( J3 `  O3 P7 a        {
: t3 ]5 m3 I7 c  v6 V7 P            printf("read failed!");
/ w; @3 Y5 Y' X, d1 f% d' n$ T& I; @# ~' |
        }. H. v9 Q# ?$ g+ L! M4 I& V9 v3 n
                else
/ i1 P" C! P% J2 G" ^                {
4 x$ G1 e9 B+ k% P* I/ }$ c# c        printf("read successed!");
* M7 B0 Z! j! l8 ]( \$ g# a0 G. w% i" I% s) j

$ Z9 i3 O5 h3 o4 C4 M% X  `9 Y+ Y        printf("wCount1:%d\n", wCount1);6 V) M; g. }2 X( u& R2 D& p( s
3 x: h4 w0 F5 W& ~" ]7 E
               % ^0 _1 h; ?9 _% V& v" O, j7 w
                printf("read data is");( o; N% J1 n; X! X% r
                for(i=0;i         {
( B/ N# j/ b# \' ]; Q; w) @: ^               
; T* ]7 |, l( L# m" C3 \7 n: m          printf("%02X", str);
6 F  M- N1 ~# b7 s        }2 [1 R9 a0 L( j& w1 ]9 S
                }: p6 N/ W+ b2 {2 W0 e! K% S, I  F
4 J' |; V4 l% p, n% K$ Y1 U
5 r7 T7 e' V4 d; A$ j
      
9 z, F% x5 F% \; m# [: M; }+ x3 d4 Z9 c( o, s" O1 s% C
CloseHandle(hCom1);2 d2 w. R+ _7 w
6 L; v0 T; m; S# P9 t
// system("pause");
, U/ Y% o/ M# [8 j6 ^1 u! G: G9 R
* S2 Q2 l* f8 u}
8 r: t. h8 n# b! x) i代码贴上来了,wCount1总是为0,不知道哪里出了问题,有没有大佬帮忙看下,感谢。

该用户从未签到

2#
发表于 2023-1-31 10:42 | 只看该作者
先确定能不能发送数据和接收数据。

该用户从未签到

3#
发表于 2023-1-31 11:20 | 只看该作者
用串口监听精灵。想问一下波特率是多少,然后你发的什么数据呢?

该用户从未签到

4#
发表于 2023-1-31 13:44 | 只看该作者
代码进程只执行了打开、配置、关闭串口的操作,并没有执行读取操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-1 11:44 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表