VC++怎么改变电脑的comportment

已经把这个错误信息Email给管理员了,我们会尽早解决这个问题
如果你持续遇到这个错误,请到bugVC++ 怎么实现自动查找连接电脑COM口 - VC/MFC当前位置:& &&&VC++ 怎么实现自动查找连接电脑COM口VC++ 怎么实现自动查找连接电脑COM口www.MyException.Cn&&网友分享于:&&浏览:852次VC++ 如何实现自动查找连接电脑COM口请教下,我用VC6.0编写的软件使用的串口通信,每次安装后都需要将电脑的上COM口和软件里的COM口改成一致,才能使用USB转串口的数据线实现通信。我想实现软件自动识别电脑当前是在占用那个COM口, 这样该如何实现呢?------解决方案--------------------
查注册表。HKEY hK if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,&HARDWARE\\DEVICEMAP\\SERIALCOMM&,NULL,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)//打开注册表成功 {
//while(ERROR_SUCCESS==::RegEnumValue(
DWORD idx, lenName = 100, dwT
char valName[100];
memset(valName,'\0',sizeof(valName));
while (RegEnumValue(hKey,
// 读取hkey 的所有子键
(LPSTR)valName,
NULL) != ERROR_NO_MORE_ITEMS)
CString strSub=valN //子键名
BYTE strCom[80];
memset(strCom,0,80);
DWORD type=REG_SZ, cbData=80; //子键类型字符串
if(RegQueryValueEx(hKey, strSub, NULL,&type,strCom, &cbData)==ERROR_SUCCESS)//读取子键值
this-&m_cmb.InsertString(m_cmb.GetCount(),(LPCTSTR)strCom);//添加串口名到列表
memset(valName,0,sizeof(valName));
lenName = 100;
// 这里是关键,因为每次循环lenName的值都会被RegEnumValue更改,
} } else {
MessageBox(&查询串口失败!&,&提示&,MB_ICONERROR); }
------解决方案--------------------
方法很多1:你可以自己写个枚举函数枚举所有的口,如果可以打开,则发送命令下去,返回正常则是你要的设备,关闭枚举。2:可以通过打开注册表来获取已插入的串口号,然后发送命令进行匹配,注册表获取串口号方法如下:C/C++ code
//////////////从注册表中读取用户的串口信息/////////
HKEY hKEY;
LPCTSTR data_Set=&HARDWARE\\DEVICEMAP\\SERIALCOMM&;
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_READ, &hKEY))
//打开注册表
AfxMessageBox(&注册表错误: 无法打开有关的hKEY!&);
LPBYTE Data_Get=new BYTE [10];
for (i=0; ;i++) //中間為空,沒有進行i值的比較
TCHAR szValueName[_MAX_PATH + 1];
DWORD dwValueName = sizeof(szValueName);
LPDWORD lpType = 0;
DWORD cbData = 10;
long ret = (RegEnumValue(hKEY,i,szValueName,&dwValueName,
NULL,lpType,Data_Get,&cbData));
for (int j=0; j&10; j++)
strPort[i].Format(_T(&%s&),Data_Get);
Port_Num = i+1;
delete[] Data_G
::RegCloseKey(hKEY);
//关闭注册表
////////////////////////////////////////////////////////
------解决方案--------------------
看看这篇文章会不会对你有帮助http://blog.csdn.net/xianglitian/article/details/7186455
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有电脑里装了这么多的vc++。。哪些能删掉?【笔记本吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,248,731贴子:
电脑里装了这么多的vc++。。哪些能删掉?收藏
这两天下游戏装了这么多vc++都有用么。。是不是版本更低的重复的都能删了?
采购小家电满额送1999吸尘器,买数码最高返1000元无敌券,企业年末采购选苏宁!苏宁企业购,正品低价,品质保障,一站式本地化采购服务平台,采购专线:
应该不可以
都是运行库,有些软件需要的,不是有新的就能删旧的了
不可以,一些游戏的运行组件,你删了后会发现些许游戏不能玩了
删了好多软件就用不了了
登录百度帐号推荐应用09:24 提问
VC++如何调用C#编写的串口驱动 DLL
最近弄一个串口打印的项目,我一直是用VC++进行开发的,c#没用过,但是对方提供的打印机的DEMO却是C#的例程,本来想着DLL是跨语言的,应该没什么问题,但是我用vc++编写了一个测试程序,确没有任何数据输出,很简单的例程,我按流程在上面加了打开串口,设置串口,发送数据,关闭串口。这几步都是用的现成的dll里面的函数,他把串口的数据操作也封装起来了,然后我就想到,在c#中是可以直接用库函数对串口读写,是不是因为这个原因,导致我在vc++中不能使用?
里面所有的都是用DLL提供的函数直接操作串口,但是就是没有串口数据输出。
注:打印机提供的C#的例程DEMO是可以正常串口打印的。
求大神解答。下面是我在vc++的窗初始化函数里写的流程。
BOOL CTestDll2008Dlg::OnInitDialog()
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
执行此操作
SetIcon(m_hIcon, TRUE);
// 设置大图标
SetIcon(m_hIcon, FALSE);
// 设置小图标
if (LoadPrintLib() == FALSE)
AfxMessageBox(_T("printdll.dll not found"));
return FALSE;
ASCII_OpenPrinter(3);
//cs.dwBaudRate = 9600;
//cs.Parity = NOPARITY;
//cs.StopBits = ONESTOPBIT;
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
ASCII_SetComPortParam(dcb);
char pBuff[3] = { 0x1b,0x57,0x02};
ASCII_DirectData(pBuff,3);
char pBuff1[] = {"hello world"};
ASCII_DirectData(pBuff1,10);
pBuff[2] = 0x01;
ASCII_DirectData(pBuff,3);
ASCII_DirectData(pBuff1,10);
ASCII_ClosePrinter();
UnloadPrintLib();
return TRUE;
// 除非将焦点设置到控件,否则返回 TRUE
按赞数排序
用串口调试助手,看你的程序和C#的发送接收的有什么不同。检查你的波特率、校验、同步等设置,端口号
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐VC如何调试串口调试_百度知道
VC如何调试串口调试
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
选择 带有 串口 的 电脑当然,连 串口通信线路
需要有安装串口驱动,安装之后下载一个串口调试助手就行了
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 comport debuger 的文章

 

随机推荐