关于串口_本地回显

风之子赛拉飞尔 2003-07-10 04:10:30
不用MSComm控件,如何实现本地回显

——即 用MSComm控件实现串口,可用GetInput()方法读取缓冲区数据,

但若用Windows API实现串口,如何读取缓冲区数据?ReadFile()好像不行!
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxi13720 2003-07-11
  • 打赏
  • 举报
回复
那样不好吧
据我测试
串口事件的反映相当快
比监视文件安全多了
AthlonxpX86 2003-07-10
  • 打赏
  • 举报
回复
你的意思是监控串口吧,你可以作readfile writefile的APIHOOK来实现监控串口的目的,(当然同样也可以监控文件读写
wuxq7311 2003-07-10
  • 打赏
  • 举报
回复
来看看!
wangxi13720 2003-07-10
  • 打赏
  • 举报
回复
这么简单的东西肯定是差不多的啊
看看这篇文章
http://www.pcvc.net/category/content.asp?sendid=279
  • 打赏
  • 举报
回复
仔细看了一下,你的代码与我的相同。
  • 打赏
  • 举报
回复
多谢,多谢!
wuchuncai 2003-07-10
  • 打赏
  • 举报
回复

HANDLE hCom;
DCB dcb;
BOOL bSuccess;
//----------
unsigned long count=0;
hCom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if(hCom==INVALID_HANDLE_VALUE)
{ AfxMessageBox("被控通讯口被其他占用");vpd->ComThreadEnd=TRUE;return FALSE;}
memset(&dcb,0,sizeof(DCB));
bSuccess=GetCommState(hCom,&dcb);
if(!bSuccess){AfxMessageBox("无法得到被控通讯口的信息");return FALSE;}

COMMTIMEOUTS CommTimeouts;
GetCommTimeouts(hCom,&CommTimeouts);
CommTimeouts.ReadTotalTimeoutConstant=10;
CommTimeouts.WriteTotalTimeoutConstant=10;
if(!SetCommTimeouts(hCom,&CommTimeouts))
AfxMessageBox("Com Set Time failure");

dcb.BaudRate=9600;
dcb.ByteSize=8;
dcb.StopBits=ONESTOPBIT;
dcb.fParity=FALSE;
dcb.Parity=FALSE;
bSuccess=SetCommState(hCom,&dcb);
if(!bSuccess){AfxMessageBox("无法初始被控通讯口");return FALSE;}
BYTE r[10];
ReadFile(hCom,r,1,&count,NULL);
CloseHandle(hCom);

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧