首页 > 其他 > 详细

【MFC】CMSComm 控件串口编程

时间:2014-03-20 18:31:57      阅读:692      评论:0      收藏:0      [点我收藏+]

之前在windows下用串口的时候都是用的windows的API做串口编程,他有个弊端,在接收到数据之后,不能立刻进行处理;但是CMSComm可以在接收到数据之后会立刻处理这些数据;

右键--> Insert ActiveX Control -->Microsoft Communications Control,version ...

bubuko.com,布布扣

之后,在Dialog上就会出现一个小图标:bubuko.com,布布扣

可以右键看看他的属性:默认情况下是选择COM1,波特率:9600,校验位:None,数据位:8,停止位:1。

OK,我们需要添加一个这个控件的变量;

CMSComm m_serial;

//串口的详细造作各个步骤

m_serial.SetCommPort(1);//设置输入要打开的端口
m_serial.SetInBufferSize(10240);//设置接收缓冲区
m_serial.SetOutBufferSize(1024);//设置发送缓冲区
m_serial.SetInputMode(1);//设置输入方式为二进制

/* 设置一些流标志位 */
m_serial.SetEOFEnable(false);
m_serial.SetDTREnable(false);
m_serial.SetRTSEnable(false);

m_serial.SetSettings("9600,n,8,1”);
m_serial.SetRThreshold(1);//设置几个字节触发接收响应事件
m_serial.SetInputLen(0);//清除接收字符统计区
m_serial.SetPortOpen(TRUE);//打开串口

//串口发送,需要借助CByteArray类

CByteArray array;

memcpy(array.GetData(),str,str_len);

m_serial.SetOutput(COleVariant(array));

//串口接收,同样需要借助CByteArray类

//为了保证数据接收的实时性,我们需要重载OnOnCommMscom()函数

//右键-->Class Wizard  安装下面的图操作

bubuko.com,布布扣

然后就添加了重载函数OnOnCommMscom();

然后在里面添加接收代码:

//判断事件类型,2为接收到数据了

VARIANT vResponse;
char *buff;
if(m_serial.GetCommEvent() == 2){
    int recv_len = m_serial.GetInBufferCount();;
    buff = (char *)malloc(recv_len);
    if(recv_len > 0){
        vResponse = m_serial.GetInput();
        memcpy(buff,(unsigned char *)vResponse.parray->pvData,recv_len);
        /*TODO: Add your control notification handler code here*/

    }
    delete buff;
}
这样即可了;有时候我们想在程序里面先扫描下,那个端口可以被打开,也就是你插入了那些端口;我大致看了下这个控件,貌似没有发现可以扫描的插件;

然后我就调用Windows的API,写了一个扫描的程序;

	HANDLE fd;
	char i = 1;
	char com_name[5];
	m_port.ResetContent();
	while(i < 21){
		sprintf(com_name,"COM%d",i);
		fd = CreateFile(com_name,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
		if(fd != INVALID_HANDLE_VALUE){
			m_port.AddString(com_name);
			CloseHandle(fd);
		}
		i++;
	}
	if(m_port.GetCount() > 0)
		m_port.SetCurSel(0);
m_port是我的一个ListBox控件的控制变量;这样,他就会自动帮我添加已经找到的端口到ListBox里面;


希望大家多多指点!

【MFC】CMSComm 控件串口编程,布布扣,bubuko.com

【MFC】CMSComm 控件串口编程

原文:http://blog.csdn.net/ieczw/article/details/21636695

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!