如何用C语言写一个读、写串口的程序?

如何用C语言写一个读、写串口的程序?,第1张

大致过程就是

配置串口通信,包括串口号、波特率、校验位、停止位这些信息;

打开串口,和打开文件一样,在Linux下是这样,Windows下没试过,估计也差不多;

发送数据,即写串口,就跟写文件类似;

读取串口,用read就行。

具体的函数和配置参数可以参考一些别人的代码。

void Send_Byte(uchar i)

{

WDI = ~WDI

TI = 0

SBUF = i

while(TI==0)

WDI = ~WDI

TI = 0

}

void Send_String(uchar *string)

{

while(*string!=0)

{

Send_Byte(*string)

string ++

}

}

void Com_A_Int() interrupt 4

{

uchar idata status

status = SBUF

RI = 0

if (status == 0x02)

Send_String("HELLO")

if (status == 0x55)

Send_String("THIS IS A WELL BEGIN!")

}

这是串口中断程序,其他的你可以自己根据实际情况编写

#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/11880834.html

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

发表评论

登录后才能评论

评论列表(0条)

保存