MFC控件程序 在非VC环境下无法启动 在线等 谢谢 MFC控件程序 在非VC环境下无法启动 是用的静态链接 不管是调试版还是Release版都毫无反应 在任务管理器中没有相应的进程运行 是一个MSCOMM的串口通信程序 在本机有MFC环境下运行正常 在线等 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MSCOMM控件在新机器环境下有没有注册啊? 另外ACtiveX控件好像不能静态连编吧,你还是要提借相关文件的。 哦 要注册啊 没有考虑过这个问题 可是那样是不是有点麻烦 =============将相关的ACtiveX文件自制过去,执行regsvr32就行了 哦 原来是这样 朋友 再问下 我用MSCOMM中的ONCOMM接收数据 可是是乱码 不知道怎么接收 可不可以指点下 谢谢了void CCSCommTestDlg::OnComm() { // TODO: Add your control notification handler code here AfxMessageBox("OnComm"); VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符 { ////////以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.GetInput(); //读缓冲区 safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++) //将数组转换为Cstring型变量 { BYTE bt=*(char*)(rxdata+k); //字符型 strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 m_strRXData+=strtemp; //加入接收编辑框对应字符串 } } UpdateData(FALSE); //更新编辑框内容} 不好意思,我从来就没用过MSCOMM,具体情况不清楚,建议检查这两句:BYTE bt=*(char*)(rxdata+k); //字符型 strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 你要弄清楚下位机发送上来的数据是什么形式的,比如发送数字1,它是发送0x01,还是0x31;如果是0x01的话,说明它把数字1当成十六进制数,而不是字符strtemp.Format("%c",bt); 需要修改一下:strtemp.Format("%2x ",bt); 哦 是一个单片机朋友要我弄的一个程序 就是 他说我串口一直不停的在发东西0x88是引导码(第0个数)0X00 or 55 or 11 表示温度控制系统的工作状态 最后的表示温度 程序实现的功能就是用VC做的界面来监视和控制系统温度很谢谢两位朋友的解答 还望DENGXUXING在指点下 再次感谢 这个问题我前几天也遇到了你得先把MSCOMM32.OCX拷到SYSTEM32下,然后在运行里输入regsvr32 mscomm32.ocx注册就ok了 0x88是引导码(第0个数) 0X00 or 55 or 11 表示温度控制系统的工作状态 最后的表示温度 程序实现的功能就是用VC做的界面来监视和控制系统温度 ==================没做好相关的东西,不过这些数据很明显不是字符啊,所以你的代码读出来显示出来是乱码是很正常的,你现在要做的就是数进转化工作而已 不是很明白它要发上来的数据是:0x88 0X00 or 55 or 11 吗?还是:0x88 0X00是后者的话:strtemp.Format("%2x ",bt); 是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88 共四个字节的数 不是很明白它要发上来的数据是:0x88 0X00 or 55 or 11 吗?还是:0x88 0X00是后者的话:strtemp.Format("%2x ",bt); 是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88 共四个字节的数 不好意思 还要在麻烦下 在用MSCOMM发送的时候出了点问题,朋友说只要发送过去的是个十六进制的就好了 可是总要出毛病 还望指点一二 谢谢 顶下帖子我也碰到这个问题终于在CSDN解决了我的问题! 数据趋势判断 请问RtlAllocateHeap这个函数是做什么用的 关于dns AAAA 的查询方式 请教一个简单的宏问题,怎么在for循环语句中使用 请赐教!!怎样使包含自己做的ActiveX控件的程序在其他机器上运行?在线急等!!100分 boundschecker 问题! 为什么总是报LocalAlloc()出错! 超高分求救,内容十分简单 堆栈的两个问题? 关于串口发送非字符文件的问题??? 奇怪问题:多线程下GDI 绘图,保存至bmp文件中 为什么不加临界区比加临界区快?单线程比多线程快? 对对话框中picture控件中的图片进行直方图均衡化 协议驱动 问题???
=============
将相关的ACtiveX文件自制过去,执行regsvr32就行了
{
// TODO: Add your control notification handler code here
AfxMessageBox("OnComm"); VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串 }
}
UpdateData(FALSE); //更新编辑框内容
}
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
strtemp.Format("%2x ",bt);
0x88是引导码(第0个数)
0X00 or 55 or 11 表示温度控制系统的工作状态 最后的表示温度 程序实现的功能就是用VC做的界面来监视和控制系统温度
很谢谢两位朋友的解答 还望DENGXUXING在指点下 再次感谢
你得先把MSCOMM32.OCX拷到SYSTEM32下,然后在运行里输入regsvr32 mscomm32.ocx注册就ok了
0X00 or 55 or 11 表示温度控制系统的工作状态 最后的表示温度 程序实现的功能就是用VC做的界面来监视和控制系统温度
==================
没做好相关的东西,不过这些数据很明显不是字符啊,所以你的代码读出来显示出来是乱码是很正常的,你现在要做的就是数进转化工作而已
0x88 0X00 or 55 or 11 吗?
还是:
0x88 0X00是后者的话:strtemp.Format("%2x ",bt);
是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88
共四个字节的数
0x88 0X00 or 55 or 11 吗?
还是:
0x88 0X00是后者的话:strtemp.Format("%2x ",bt);
是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88
共四个字节的数
还望指点一二 谢谢
我也碰到这个问题
终于在CSDN解决了我的问题!