在WIN2K环境下使用MSComm控件需要什么特殊的设置吗?谢谢! 如上、 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 具体问题在下面:我的程序是一个基于对话框的程序,在程序中我添加了一个Combox控件和一个Button控件,当程序运行时,在COMBOX控件选中COM1或COM2,然后按下button就将预定的一个字符串从串口发送出去,而且只要求单工方式,但是当我按下button时,程序就出错!我用异常和断点调试来查看是什么地方发生错误都不行!请大家看看我下面的一段程序。首先是button对应的程序:在BarcodePrintDlg.cpp文件中void CBarcodePrintDlg::OnButtonPrint() //打印按钮{ CString strPort; //定义一个字符串变量 GetDlgItemText(IDC_COMBO_PORT,strPort); //将组合框中选中的项赋给字符串变量 if(strPort=="COM1") //如果这个组合框中选中的是"COM1" m_MSComm.SetCommPort(1); //设置端口号为COM1 if(strPort=="COM2") m_MSComm.SetCommPort(2); if(!m_MSComm.GetPortOpen()) //取得当前的串口状态是不是打开的 m_MSComm.SetPortOpen(TRUE); //如果没有打开,则打开 m_MSComm.SetSettings("9600,n,8,1"); //设置波特率等参数 m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0 m_MSComm.GetInput(); //读缓冲区以清除其中保留的数据 m_MSComm.SetOutput(COleVariant("ok!")); //发送字符串"ok!"}另外在BarcodePrintDlg.h文件里面有如下两个定义:#include "mscomm.h" //class CBarcodePrintDlg : public CDialog{ ... public: ... CMSComm m_MSComm; //声明一个串口类对象 ...}当我按下BUTTON时,就出错,上面有“终止,重试,忽略”三个按钮!当我多按几下“忽略”时,该提示就消失了,这时我再按下BUTTON时,又出现了刚才的情况!请大家帮我看看这是怎么回事?谢谢了! 将m_MSComm.SetOutput(COleVariant("ok!")); //发送字符串"ok!"改为:char str[2]={'o','k'};CByteArray bt;bt.RemoveAll();bt.SetSize(2);for(int i=0;i<2;i++)bt.SetAt(i,str[i]);m_MSComm.SetOutput(COleVariant(bt)); //发送字符串"ok!" m_mscomm.SetInputMode(1); //1:表示以二进制方式检取数据m_mscomm.SetRThreshold(1); 没有设门限吧,再试试! 用vc做过动态界面的朋友请进! 帮帮我啊!看了这贴,就谢谢你。怎么在多文档的MFC工程中建立子框 如何去掉SDI中的菜单? 问个小问题! 200分相送,帮顶也有分,初学者问题 为什么我的vc中的提示功能没有了? ButtonST是不是把双击事件屏蔽掉了???? 请问如何用一个变量来表示一个控件 谈一下找工作的经历好吗 MFC类在标准DLL中的应用! 加入mscomm控件,对话框就显示不出来? 有这样的 系统函数 或者 工具 吗 , 可以 查询 并 枚举 当前系统中产生的filemapping 对象 ?
我的程序是一个基于对话框的程序,在程序中我添加了一个Combox控件和一个Button控件,当程序运行时,在COMBOX控件选中COM1或COM2,然后按下button就将预定的一个字符串从串口发送出去,而且只要求单工方式,但是当我按下button时,程序就出错!我用异常和断点调试来查看是什么地方发生错误都不行!请大家看看我下面的一段程序。
首先是button对应的程序:在BarcodePrintDlg.cpp文件中void CBarcodePrintDlg::OnButtonPrint() //打印按钮
{
CString strPort; //定义一个字符串变量
GetDlgItemText(IDC_COMBO_PORT,strPort); //将组合框中选中的项赋给字符串变量
if(strPort=="COM1") //如果这个组合框中选中的是"COM1"
m_MSComm.SetCommPort(1); //设置端口号为COM1
if(strPort=="COM2")
m_MSComm.SetCommPort(2); if(!m_MSComm.GetPortOpen()) //取得当前的串口状态是不是打开的
m_MSComm.SetPortOpen(TRUE); //如果没有打开,则打开 m_MSComm.SetSettings("9600,n,8,1"); //设置波特率等参数
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0
m_MSComm.GetInput(); //读缓冲区以清除其中保留的数据 m_MSComm.SetOutput(COleVariant("ok!")); //发送字符串"ok!"
}
另外在BarcodePrintDlg.h文件里面有如下两个定义:#include "mscomm.h" //class CBarcodePrintDlg : public CDialog
{
...
public:
...
CMSComm m_MSComm; //声明一个串口类对象
...
}当我按下BUTTON时,就出错,上面有“终止,重试,忽略”三个按钮!当我多按几下“忽略”时,该提示
就消失了,这时我再按下BUTTON时,又出现了刚才的情况!
请大家帮我看看这是怎么回事?
谢谢了!
改为:char str[2]={'o','k'};
CByteArray bt;
bt.RemoveAll();
bt.SetSize(2);
for(int i=0;i<2;i++)
bt.SetAt(i,str[i]);m_MSComm.SetOutput(COleVariant(bt)); //发送字符串"ok!"
m_mscomm.SetRThreshold(1);
没有设门限吧,再试试!