串口发送失败

逆风飞扬已经存在 2017-06-28 05:58:11
wince下写的程序,本来都已经好了,后来因为测试不准,又加了一个校准界面,也就是另弹出一个对话框,在这个对话框上进行数据校准,因为程序一直有串口通信,所以把串口打开、关闭和给下位机发送函数都放在了主界面对话框,现在多了一个校准界面,我就想调用用主对话框里的串口发送函数发送校准数据给下位机,但是主对话框的串口发送函数可以调用,设一个断点也可以走过去,就是数据发不出去,可是从主界面调对话框调用发送函数就可以发送出去,很奇怪,下面是所牵涉的代码:
主界面:CZjmDialog

void CZjmDialog::sendjzdata(int pid,int jzwd) //发送函数
{
DWORD dwBytesWrite;
unsigned short crc = 0;
unsigned char TxBuffer[8]={0x00,0x00,0x00}; // 目标 char* 存放的字符数组(你也可以用指针定义 然后malloc,一样)
char destBuf[8]={0};

TxBuffer[0] = pid;
TxBuffer[1] = 0x44;
TxBuffer[2] = 0x00;
TxBuffer[3] = 0x00;
TxBuffer[4] = jzwd;
TxBuffer[5] = jzwd >> 8;


crc = (unsigned short)modbus_CalcCrc(TxBuffer,6);
TxBuffer[6] = crc & 0xff;
TxBuffer[7] = (crc >> 8) & 0xff;

WriteFile(hCom, TxBuffer ,8, &dwBytesWrite, NULL);
}

//在这里调用就可以把数据通过串口发送出去
void Cpage4::OnBnClickedButtonJz() //按键按下
{
// TODO: 在此添加控件通知处理程序代码
//计算数据过程//
sendjzdata(station,wdsj); //调用主对话框的串口发送函数发送校准数据


但放在校准对话框:CjzDialog,数据就发不出去

void Cpage4::OnBnClickedButtonJz() //按键按下
{
// TODO: 在此添加控件通知处理程序代码
//计算数据过程//
CZjmDialog *pWnd = (CZjmDialog *)AfxGetMainWnd(); //获取主对话框的窗口句柄
pWnd->sendjzdata(station,wdsj); //调用主对话框的串口发送函数发送校准数据
...全文
761 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwqwqw408 2017-07-20
  • 打赏
  • 举报
回复
设断点,看是否执行到WriteFile,如果执行了,看下返回值是不是成功,如果不成功,调用getLastError函数获取详细的失败代码,发出来看下。
jedy_woody 2017-07-03
  • 打赏
  • 举报
回复
1. hCom是啥, WriteFile(hCom, TxBuffer ,8, &dwBytesWrite, NULL); 2. AfxGetMainWnd()有点可疑
91program 2017-06-29
  • 打赏
  • 举报
回复
1 单步调试一下,看看这一句:WriteFile(hCom, TxBuffer ,8, &dwBytesWrite, NULL); 在两种情况下的数值是否正确; 2 如果数据都像示例一样简单,可以通过消息将数据传到主窗体,然后再在主窗体中调用发送函数。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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