串口程序的发布问题

nakada1984 2012-02-07 09:13:16
用VC6.0编了一个串口通信的程序,现在想把程序做成安装文件发布出去。
发布之前在release文件夹下双击可执行文件可以运行,做成安装包后在打开
串口时提示无法打开串口(提示cannot open serial port),在安装包内添加了几个dll,MFCO42D.DLL,MSVCP60D.DLL,
MSVCRTD.DLL,MFC42D.DLL,另外,注册了组建MSCOMM32.OCX;部分代码如下:
程序执行到了AfxMessageBox("cannot open serial port");
void CReallineView::OpenPort1(long speed)
{
//打开端口,speed为波特率,数字板串口
CString tem;
tem.Format("%ld,n,8,1",speed);
if(m_Comm1.GetPortOpen())
m_Comm1.SetPortOpen(FALSE);

m_Comm1.SetCommPort(m_DSPCom); //选择com1
if( !m_Comm1.GetPortOpen())
m_Comm1.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); 执行到了这句!!!!!!

m_Comm1.SetSettings(tem); //波特率9600,无校验,8个数据位,1个停止位

m_Comm1.SetInputMode(1); //1:表示以二进制方式检取数据
}

现在完全蒙了,个人理解好像是我的程序中是否缺少其他的库文件?
...全文
210 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang 2013-01-18
  • 打赏
  • 举报
回复
在安装包内添加了几个dll,MFCO42D.DLL,MSVCP60D.DLL,MSVCRTD.DLL,MFC42D.DLL你的发布版怎么还打包调试版的动态库啊。
nakada1984 2013-01-17
  • 打赏
  • 举报
回复
已经解决,谢谢各位大侠。问题出在串口的初始化上,工程缺少一个串口的控件,只是在代码部分做了初始化,没有在MFC里面添加控件,添加后问题解决了,现在在没有vc的电脑上也能够安装运行了。
百事烟 2012-02-08
  • 打赏
  • 举报
回复
串口调试助手 试下
ssd189 2012-02-08
  • 打赏
  • 举报
回复
新建->新建文本文件.
诶呦 2012-02-07
  • 打赏
  • 举报
回复
if(m_Comm1.GetPortOpen())
m_Comm1.SetPortOpen(FALSE);
=================================================================
你看看你的前两句,如果打开,就让它关闭;

m_Comm1.SetCommPort(m_DSPCom); //选择com1
if( !m_Comm1.GetPortOpen())
m_Comm1.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); 执行到了这句!!!!!!
=================================================================
然后又如果没打开就打开,否则Message,明显逻辑有点乱了,虑一下

诶呦 2012-02-07
  • 打赏
  • 举报
回复
m_Comm1.SetCommPort(m_DSPCom); //选择com1
if( !m_Comm1.GetPortOpen())
m_Comm1.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); 执行到了这句!!!!!!

========================================================================
你选择了com1,如果没有打开则打开串口,否则就MessageBox,说明你的COM1已经打开或者被占用。
解决:
1.打开任务管理器,看看是否有任务未结束;
2.单步调试,看m_DSPCom的值是否为1;


m_ctrlComm.SetCommPort(1);
m_ctrlComm.SetInputMode(1);
//ctrlComm.SetInBufferSize(2048);
//ctrlComm.SetOutBufferSize(1024);
m_ctrlComm.SetSettings("19200,n,8,1");
if (!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.SetInputLen(0);
m_ctrlComm.GetInput();
fishion 2012-02-07
  • 打赏
  • 举报
回复
设置静态链接MFC库
chen_freecom 2012-02-07
  • 打赏
  • 举报
回复
确定端口存在或可用??
可以在程序开启的时候遍历注册表,找出可用的串口给用户选择。。

另外,强烈建议用api写串口程序。
某些USB转串口的驱动不支持MSCOMM控件的。现在漫天的笔记本。。。
zgl7903 2012-02-07
  • 打赏
  • 举报
回复
确定 m_DSPCom 端口存在?
nakada1984 2012-02-07
  • 打赏
  • 举报
回复
在安装了VC的电脑上没有上面说到的问题。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧