c语言怎么实现串口通信

c语言怎么实现串口通信,第1张

编程原理

程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS

INT

14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存

#include <stdio.h>

#include <Windows.h>

int main(void)

{

FILE *fp

char temp

char buf[100]

if((fp = fopen("com3","r")) == NULL)

puts("this way doesn't work!\n")

else

puts("this way works!\n")

while(1)

{

temp = 0

fscanf(fp,"%c",&temp)

if(temp != 0)

putchar(temp)

else

Sleep(100)

}

fclose(fp)

return 0

}

以前弄的,好久没看了,不知到对不对。

还有下面这段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

#include <Windows.h>

#include <stdio.h>

HANDLE hCom

int main(void)

{

hCom=CreateFile(TEXT("COM3"),//COM1口

GENERIC_READ|GENERIC_WRITE, //允许读和写

0, //独占方式

NULL,

OPEN_EXISTING, //打开而不是创建

0, //同步方式

NULL)

if(hCom==(HANDLE)-1)

{

printf("打开COM失败!\n")

return FALSE

}

else

{

printf("COM打开成功!\n")

}

SetupComm(hCom,1024,1024)//输入缓冲区和输出缓冲区的大小都是1024

COMMTIMEOUTS TimeOuts

//设定读超时

TimeOuts.ReadIntervalTimeout=1000

TimeOuts.ReadTotalTimeoutMultiplier=500

TimeOuts.ReadTotalTimeoutConstant=5000

//设定写超时

TimeOuts.WriteTotalTimeoutMultiplier=500

TimeOuts.WriteTotalTimeoutConstant=2000

SetCommTimeouts(hCom,&TimeOuts)//设置超时

DCB dcb

GetCommState(hCom,&dcb)

dcb.BaudRate=9600//波特率为9600

dcb.ByteSize=8//每个字节有8位

dcb.Parity=NOPARITY//无奇偶校验位

dcb.StopBits=ONE5STOPBITS//两个停止位

SetCommState(hCom,&dcb)

DWORD wCount//读取的字节数

BOOL bReadStat

while(1)

{

PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR)//清空缓冲区

char str[9]={0}

printf("%s\n",str)

bReadStat=ReadFile(hCom,str,9,&wCount,NULL)

if(!bReadStat)

{

printf("读串口失败!")

return FALSE

}

else

{

str[8]='\0'

printf("%s\n",str)

}

Sleep(100)

}

}

以上两段代码是一年前弄的,我记得可以用,你试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12028639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存