配置串口通信,包括串口号、波特率、校验位、停止位这些信息;
打开串口,和打开文件一样,在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)
}
}
以上两段代码是一年前弄的,我记得可以用,你试试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)