用VC6.0做一个串口调试助手,但是receive编辑框总是接收不到数据,求知道的大神帮帮忙

水星_ 2016-07-27 10:26:39
我是根据龚建伟的串口通讯编程实践那本书来做的,编译也没有错误,但是就是接收不到数据,下面是一部分程序
void CZylDlg::OnButtonOpen() //打开串口
{
// TODO: Add your control notification handler code here
int nPort = m_ctrlComboComPort.GetCurSel()+1; //得到串口号
if(m_SerialPort.InitPort(this, nPort, 9600, 'N', 8, 1, EV_RXFLAG|EV_RXCHAR, 512))
{
m_SerialPort.StartMonitoring();
m_bSerialPortOpened = TRUE;
}
else
{
AfxMessageBox("没有发现此串口或被占用");
m_bSerialPortOpened = FALSE;
}
GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
}

void CZylDlg::OnButtonClose() //关闭串口
{
// TODO: Add your control notification handler code here
m_SerialPort.ClosePort(); //关闭串口
m_bSerialPortOpened = FALSE;
GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
}

void CZylDlg::OnButtonSend()
{
// TODO: Add your control notification handler code here
if(!m_bSerialPortOpened) return; //检查串口是否打开
UpdateData(TRUE); //读入编辑框中的数据
m_SerialPort.WriteToPort((LPTSTR)((LPCTSTR)m_strEditSendMsg)); //发送数据
}

希望大家可以帮帮忙
...全文
799 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
沐清浅 2017-08-23
  • 打赏
  • 举报
回复
你好 我用Qt做了一个串口助手 现在的问题是串口可以发送数据,但是接收不到数据,调试也发现根本没有进入过接收处理函数里面,如果理解的话,希望可以帮忙看看
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
//下面两句一定要放在构造函数才起作用,不明白为什么
struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
//定义一个结构体,用来存放串口各个参数
myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
//定义串口对象,并传递参数,在构造函数里对其进行初始化


connect(ui.OpenBtn, SIGNAL(clicked()), this, SLOT(on_OpenBtn_clicked()) );
connect(ui.CloseBtn, SIGNAL(clicked()), this, SLOT(on_CloseBtn_clicked()) );
connect(ui.SendBtn, SIGNAL(clicked()), this, SLOT(on_SendBtn_clicked()) );

}

void MainWindow::on_OpenBtn_clicked(){

myCom ->open(QIODevice::ReadWrite);
//以可读写方式打开串口
connect(myCom, SIGNAL(readyRead()), this, SLOT(readMyCom()));
}

void MainWindow::readMycom(){
QByteArray temp = myCom->readAll();
//读取串口缓冲区的所有数据给临时变量temp
ui.DisplayBrowser->insertPlainText(temp);
//将串口的数据显示在窗口的文本浏览器中
}

赵4老师 2016-07-27
  • 打赏
  • 举报
回复
搜“串口调试助手 源代码”
水星_ 2016-07-27
  • 打赏
  • 举报
回复
谢谢楼上几位的帮助,我发现原来是因为接收编辑框没有关联变量,后来添加以后就好了
叶恭介叶恭介 2016-07-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/cvbtvbwu/article/details/24694739 可以看这个串口的源码,亲测可用 另外你实在是想知道为什么接收不到,联系我,我帮你调试看看
zgl7903 2016-07-27
  • 打赏
  • 举报
回复
没看到接收部分的处理的代码, 要么事件消息 要么查询

2,640

社区成员

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

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