C语言writefile串口写数据,C语言操作PC串口

得分:10

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

“现在主要是不知道怎么去配置串口,比如:波特率、奇偶校验、停止位、几位数据位等等。”

------ 所以说,提问时对问题描述要清晰简洁。你说了一大堆话,看完你的问题后,乱七八糟不知道要回答什么。

你的问题不是“C语言操作PC串口”,而是“在windows平台上,C语言怎么操作PC串口?”,没有“在windows平台上”这个限语,没有人有能力回答你的问题。

比如你以前的一个帖子,看到“#include "dos.h",#include "conio.h"”后,得,dos的我忘了,放弃回答;

比如你这个帖子,又是什么“C#、com控件、Turbo C”的,皆非我所会或所愿意回答的。

回正题,在windows平台,只使用API操作COM,我给个例子给你

打开COM1

HANDLE hCom = CreateFile(TEXT("COM1"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if( hCom==INVALID_HANDLE_VALUE ) return false;

设置 波特率、奇偶校验、停止位 等等

DCB CommDCB;

GetCommState( hCom, &CommDCB );

CommDCB.BaudRate = BaudRate;

CommDCB.Parity = EVENPARITY;

CommDCB.StopBits = ONESTOPBIT;

CommDCB.ByteSize = 8;

CommDCB.fBinary = 1;

CommDCB.fParity = 1;

CommDCB.fOutxCtsFlow = 0;

CommDCB.fOutxDsrFlow = 0;

CommDCB.fDtrControl = 0;

CommDCB.fDsrSensitivity = 0;

CommDCB.fTXContinueOnXoff = 0;

CommDCB.fOutX = 0;

CommDCB.fInX = 0;

CommDCB.fErrorChar = 0;

CommDCB.fNull = 0;

CommDCB.fRtsControl = RTS_CONTROL_TOGGLE;

CommDCB.fAbortOnError = 0;

SetCommState( hCom, &CommDCB );

设置缓冲大小

SetupComm( hCom, 100, 100 );

设置超时时间

COMMTIMEOUTS CommTimeouts;

GetCommTimeouts( hCom, &CommTimeouts );

CommTimeouts.ReadIntervalTimeout = MAXDWORD;

CommTimeouts.ReadTotalTimeoutMultiplier = 0;

CommTimeouts.ReadTotalTimeoutConstant = 0;

SetCommTimeouts( hCom, &CommTimeouts );

/// 这期间就是对COM进行读写了 ///

COMSTAT ComStat; ClearCommError(hCom,&Errors,&ComStat); 后 ComStat.cbInQue 保存着一个数值,指明还有多少字节已经获得但没有用ReadFile取走。

读用 ReadFile,写用 WriteFile。

/

关闭COM

CloseHandle( hCom );

基本上就这些,详见 MFC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值