
1、首先我们在indows下打开虚拟串口的软件,这里选择的相连的串口,是串口4和串口2。
2、设置完成后,然后再windows开始点击右键选择打开设备管理器。
3、在设备管理器的端口选项中看到已经设置好的的串口2和串口4,并且两个已经设置好的串口已经相连说明两个串口之间可以进行通信了。
4、在windows中找到proteus仿真软件并打开,在工具栏中双击单片机打开51单片机的属性选项。
5、在调试程序这里选择刚才已经写好的串口调试的程序,调试程序为hex后缀结尾的二进制文件,注意设置晶振,这里是11.0592MHz。
6、双击串口控件,设置好串口号和窗口的波特率,Physical poit 为com4,Physical Baud rale为9600,Physical Dala Bits为8,Physical Panity为NONE,Vitual Baud rale9600, Vitual Dala Bits为8,Advanced Properties为NONE其它选项不懂最好不要修改。
7、配置完成后,点击proteus左下角的仿真按钮、就是左下角的播放符号,此时虚拟中断也已经成功的启动了、虚拟终端可能默认打开为文本模式,右键以hex 16进制显示。
8、打开SSCOM串口软件,在窗口中显示设置好波特率打开串口2,以16进制发送数据可以看到,虚拟终端和串口软件都已经收到了发送和返回的信息了。
#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)
}
}
以上两段代码是一年前弄的,我记得可以用,你试试。
您好,串口在Windows和Ubuntu上的工作原理是相同的,但是它们的实现方式不同。Windows使用COM端口来实现串口通信,而Ubuntu使用USB端口来实现串口通信。在Windows上,可以使用专用的串口软件来实现串口通信,而在Ubuntu上,可以使用Linux内核中提供的串口驱动程序来实现串口通信。此外,在Windows上,可以使用设备管理器来查看和配置串口设备,而在Ubuntu上,可以使用udev规则来查看和配置串口设备。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)