问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vc串口CMSComm 类的应用

发布网友 发布时间:2022-04-29 13:25

我来回答

3个回答

热心网友 时间:2023-10-09 00:39

建立项目:打开Visual C + + 6.0,建立一个基于对话框的MFC应用程序SCommTest(符合我的源代码,所以将您的方便);
在项目中插入MSComm控件选择项目菜单组件和控制...根据“添加到项目”子菜单选项,在弹出的对话框中,双击已注册的ActiveX控件项目(等待一分钟,这个过程是缓慢),所有已注册的ActiveX控件出现在列表框中。选择“Microsoft通信控制,版本6.0,单击”插入“按钮,将其插入到我们的项目中,接受默认选项。 (如果你的控件列表中没有看到微软通信控制,版本6.0,你可能安装VC6的ActiveX选举,重新安装VC6,选择的ActiveX罐),
ClassView窗口时,你可以看到的CMSComm类(注:如类向导看到在重建clw文件也小于)和手机图标(图1控制工具栏控件显示),现在需要做的是使用鼠标拖动图标到对话框中,运行时,图标是没有的。
3。使用ClassWizard定义CMSComm控制对象,打开类向导 - >会员Viariables选项卡,选择CSCommTestDlg类,控制变量:为IDC_MSCOMM1的添加m_ctrlComm在这个时候,你可以去看看在对话框的头文件自动添加到/ / {{AFX_INCLUDES ()#我的包含重新mscomm.h / /}} AFX_INCLUDES(如果出现错误,然后运行该程序,然后再从头开始)。
4。在对话框中添加控件添加在主对话框中的两个编辑框,一个用于接收数据ID IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA添加一个按钮,功能是按一次走上发送的内容编辑框中,发送其ID IDC_BUTTON_MANUALSEND的。不要忘了接收编辑框“属性” - >样式的Miltiline和垂直滚动属性选择,发送编辑框,如果你想输入多行文本,也可选Miltiline的。
类向导 - >会员Viariables选项卡,然后打开时,选择CSCommTestDlg类,中添加CString变量m_strRXData IDC_EDIT_RXDATA,以添加CString的变量m_strTXData的为IDC_EDIT_TXDATA。使用说明:m_strRXData,并m_strTXData的把字符的接收和发送数据。
5。添加串口事件消息处理函数,在OnComm()打开类向导“ - >”消息映射,选择类CSCommTestDlg选择IDC_MSCOMM1,双击该消息的OnComm,在弹出的对话框中会改变函数名的OnComm(易只记得)确定。
这个函数是用来处理一个串口消息事件时,如接收到的串行数据时,它会产生一个串口接收数据缓冲区的字符的消息事件,我们刚才添加的功能将被执行,我们的OnComm ()函数中添加处理代码就能实现自己想要的功能。添加以下代码:功能
无效CSCommTestDlg ::在OnComm()
{
/ / TODO:在此添加控件通知处理程序代码在这里
VARIANT variant_inp; BR /> COleSafeArray safearray_inp
长度,K;
BYTE RXDATA [2048] / /设置字节数组的8位integerthat是在没有签名。
CString的strtemp;
(m_ctrlComm.GetCommEvent()== 2)/ /事件值为2表示接收缓冲区
{/ / / / / / / /下面的字符可以根据自己的通信协议处理代码添加
variant_inp = m_ctrlComm.GetInput()/ /读取缓冲区
safearray_inp = variant_inp; / / VARIANT变量转换为C??oleSafeArray变量
LEN safearray_inp.GetOneDimSize()/ /得到有效数据长度>(K = 0; <LEN; + +)
safearray_inp.GetElement(&K,RXDATA + K);/ / BYTE数组转换成
(k = 0; <LEN; + +)/ /数组转换到CString变量
{
BYTE BT =(char *)的(RXDATA + K ); / /字符
strtemp.F??ormat(%C“,BT)/ /字符美联储的临时变量strtemp存储
m_strRXData + = strtemp; / /加入接收编辑框对应的字符串}
}

UpdateData(FALSE); / /更新编辑框内容
}

到目前为止还没有收到编辑框中看到的数据,因为我们没有打开串口,运行程序不应该有任何错误,否则,你肯定没仔细看,因为我打开VC6,跟风步骤写一行,正在运行的尝试。对吗?下一步:
6打开串口和设置串口参数,你可以在需要时打开串行端口,例如,在程序中作出Start“(开始)按钮,在打开的串口处理程序的按钮。我们在主对话框的CSCommTestDlg :: OnInitDialog()中打开串口,添加下面的代码:
/ / TODO:在此添加额外的初始化
(m_ctrlComm.GetPortOpen())
m_ctrlComm。SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1)/ /选择COM1
(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);/ /打开串口
其他
AfxMessageBox(“不能打开串口”);
m_ctrlComm.SetSettings(“9600,N,8,1”); / /波特率9600,无奇偶校验,8个数据位,1位停止位
(1)m_ctrlComm.SetInputMode; / / 1:表示以二进制方式检获的数据的
m_ctrlComm.SetRThreshold(1);
/ /参数1说,每当串口接收缓冲区将抛出一个字符接收到的数据OnComm事件
m_ctrlComm.SetInputLen(0); / /设置当前接收区数据长度
m_ctrlComm。GetInput(大于或等于) ;/ /先预读缓冲区以清除残留数据

现在,您可以尝试的方案,串口线连接,打开串口调试助手,COM2上的串行端口自动发送的选举也将手动发送。你写的程序的实施,接收盒,应该有数据显示。
7。发送数据的发送按钮,添加一个单击消息BN_CLICKED处理功能,打开类向导 - >消息映射,选择产品类别CSCommTestDlg选择“IDC_BUTTON_MANUALSEND,”双单击的BN_CLICKED添加OnButtonManualsend的()函数,并在函数中添加以下代码:
无效CSCommTestDlg :: OnButtonManualsend()
{
/ / TODO:您的控件通知处理程序代码
UpdateData(TRUE); / /读取编辑框的内容
m_ctrlComm.SetOutput(COleVariant的(m_strTXData));/ /发送数据
}
运行程序,在发送编辑框中输入一些东西,然后单击“发送”按钮,通过RS232 2.3短路,串口发送和接收数据的计算机上显示
最后要注意,在计算机上运行时,没有安装VC MSCOMM32.OCX MSVCRT用VC控件的VC。的dll,MFC42.DLL拷到系统目录Windows目录下(win2000的System32下),然后注册

热心网友 时间:2023-10-09 00:39

推荐看书
Visual C++_Turbo C串口通信编程实践

热心网友 时间:2023-10-09 00:40

不会!!来自:求助得到的回答
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
诺基亚5233直签工具 我的5233下了证书、也在塞班官网上在线签名了、怎么还是提示证实书错误... 你好 就是我用的诺基亚5233直签工具就是用不了什么受证书限制内部错误... 请问哪里有做餐用包装纸巾的.厂 怎么在餐巾纸上或者纸巾包装上打广告? 广告餐巾纸广告餐巾纸的分类 广告餐巾纸广告餐巾纸的制作形式 ...支付密码一样呢?支付密码和银行卡的关系是什么?求解答, ...今天是怎么了,换了数据线也不行,同事的M1也一样不能充电... 小米M1和小米青春版就是CPU和内存不一样,我是学生,买哪一个比较好? CMSFlexGrid 在注册了MSFLXGRD.OCX的机器上(没装VC6.0)运行可执行程序时却不能显示出来 为什么CMSComm串口控件会造成内存泄漏 apple watch 屏幕常亮 海康威视cmsocx 插件手机版怎么安装 一代第二代第三代第四代Apple Watch可以长亮吗? 为什么我说小三的删掉老公大发脾气 我有小三电话号码,,就是找不到怎么办 有小三电话,怎么处理,电话就是她的,还不能让自己的老公知道 小三wxid_emven6exgtzq21怎样才能查到小三电话号码? 老公的跟小三都是YJ是什么意思? 如果有小三的要和她聊天吗? 老公和小三断了半年了我发现他还存着小三的和qq号我该怎么办 老师在群里发了一个群公告,不小心按到完成后变成钱待办过后收不到信息是怎么? 怎样更换码 为什么我说小三的删掉老公大发脾气 已经和小三彻底分开了,但小三主动又加老公 老公给小三微信转账,小三不承认是她的怎么办 我把小三给他老公难道我做错了吗 有一万元人民币闲钱,求最佳理财方法 情人老公不断的换加我微信,他想干嘛?? apple watch怎么常量 请问 使用vb mscomm 握手的代码应该如何写? 编辑器 asp SetPortsvc.exe什么程序? 为什么我的电脑总是自动开启servercms.exe 你好,请问你的那个CMSFlexGrid控件不显示的问题是怎么解决的?我也遇到了类似的问题。谢谢你 win10系统怎样把ie浏览器放到桌面 vc串口setportout怎么用 工商银行 U盾 网上交易时为什么提示请插如U盾做签名交易 如何把win10的浏览器设置到桌面 stm8 在pwm模式下怎么发生溢出中断 如何用vc++写串口调试助手 wincc中列滚动条控件怎么显示刻度 wincc#include &quot;picblck.h怎么找到 怎么把win10的ie浏览器放到桌面 我有5个12v的电瓶怎样接线使它们变为48v? 怎么去掉手机上的应用推荐,就是那样的 能不能把12V的直流电变成48V的直流电? 怎样将12伏汽车蓄电池转换48伏转换器 我现在有5块12v的蓄电池,想把它接成一组48V的电路。。要每块电池都用?