📄 windowsc++ 串口心得(activex控件).txt
字号:
1、将ActiveX控件的串口控件复制到C:/windows/system32目录中,包含Mscomm.srg, Mscomm32.ocx,Mscomm32.dep等三个文件(假设使用的是6.0的控件)。
2、运行Regsvr32 C:\windows\system32\Mscomm32.ocx,进行控件的注册。
2.5、在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主键
4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
(一般不需执行此步骤)
3、建立项目RS232时,应用程序类型选为“基于对话框”,并在高级功能中选中“ActiveX控件”。
4、在工具箱中,右键菜单中选择“添加/移除项”,选中“COM组件”中的“Microsoft Communications Control, version 6.0”。然后将添加的图标拖到对话框中,右键选择图标,添加变量m_comm1。
5、可在OnInitDialog()中进行串口的初始化
m_comm1.put__CommPort (1); //使用串口1
m_comm1.put_Settings ("9600,N,8,1"); //串口设置为波特率9600,无校验,8位数据位,1位停止位
m_comm1.put_InputMode (1); //以二进制方式取得数据
m_comm1.put_RThreshold (1); //接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件
m_comm1.put_SThreshold (0); //发送数据不会产生 OnComm 事件
m_comm1.put_InputLen (0); //从接收缓冲区中读取的字符数;为0时,将读取接收缓冲区中全部的内容。
m_comm1.put_PortOpen (true); //打开串口
6、发送数据
CByteArray array;
CString cstemp;
int i;
cstemp="Hello World!"; //发送内容
//将发送数据存入array start
array.RemoveAll();
array.SetSize(cstemp.GetLength ());
for(i=0;i<cstemp.GetLength ();i++)
array.SetAt(i,cstemp.GetAt (i));
//将发送数据存入array end
m_comm1.put_Output (COleVariant(array)); //发送数据
7、接收数据
在对话框中选中控件图标,在属性页的控件事件中对OnComm事件选择添加,程序会自动添加OnCommMscomm1()函数,在此函数中处理数据的接收。
CString cstemp1="",cstemp2;
VARIANT vtemp;
COleSafeArray cotemp;
long len1,k;
unsigned char rxdata[10000];
switch(m_comm1.get_CommEvent() ) //对OnComm事件进行选择
{
case 2: //OnComm事件为收到数据
while(m_comm1.get_InBufferCount() >0) //当接收缓存区还有数据未被接收
{
vtemp=m_comm1.get_Input(); //取得数据
cotemp=vtemp; //数据类型转换
len1=cotemp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len1;k++)
{
cotemp.GetElement(&k,rxdata+k); //转换为BYTE型数组
}
rxdata[k]=0;
cstemp2=rxdata;
cstemp1+=cstemp2; //转换为字符串
}
cstemp1="收到数据:"+cstemp1;
m_list.AddString (cstemp1); //显示接收数据
break;
}
8、多串口的话则添加多个控件图标,每个图标添加一个变量,对应不同的串口。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -