unsigned long _stdcall CJCCHelperDlg::CommWorker(void* p)
{
unsigned long cnt;
while (1)
{
unsigned long wres = WaitForSingleObject(evWrite, INFINITE);
if (WAIT_OBJECT_0 == wres)
{
TRACE("begin xmit...\r\n");
WriteFile(HDLComm, m_xbuf, 40, &cnt, NULL);
TRACE("begin recv...\r\n");
if (!ReadFile(HDLComm, m_rbuf, 100, &cnt, NULL)) TRACE("File read failed!");
::PostMessage(MyWnd, MSG_CMM_NOTIFY, 0, 0);
}
}
return 0;
}主线程在需要写串口的时候,填写缓冲区(m_xbuf)给出一个信号,这个线程收到就送出这个40字节的包,这一步没错.
然后从串口读大约40字节的包,目标一个有100字节的缓冲区(m_rbuf),也能收到数据,但收到的包的破坏了的.为什么呀?
{
unsigned long cnt;
while (1)
{
unsigned long wres = WaitForSingleObject(evWrite, INFINITE);
if (WAIT_OBJECT_0 == wres)
{
TRACE("begin xmit...\r\n");
WriteFile(HDLComm, m_xbuf, 40, &cnt, NULL);
TRACE("begin recv...\r\n");
if (!ReadFile(HDLComm, m_rbuf, 100, &cnt, NULL)) TRACE("File read failed!");
::PostMessage(MyWnd, MSG_CMM_NOTIFY, 0, 0);
}
}
return 0;
}主线程在需要写串口的时候,填写缓冲区(m_xbuf)给出一个信号,这个线程收到就送出这个40字节的包,这一步没错.
然后从串口读大约40字节的包,目标一个有100字节的缓冲区(m_rbuf),也能收到数据,但收到的包的破坏了的.为什么呀?
解决方案 »
- 求BT 迅雷的特征码(VC的)
- Double 型比较会出错?
- 各位大虾,怎样获得DHCP(动态分配主机ip)下的子网掩码呢?急!急!在线等!!!
- 如果检测 send 或 sendto 的发送进度?
- 怎样开发内存缓冲的程序
- 谁能告诉我,这个错误是怎么回事?f:\vc\com\drawlineclient\drawlline_i.c(51) : fatal error C1010: unexpected end of file while loo
- 怎么还是关于CSocket多线程的问题??
- vc菜鸟再提问!!
- 《C++ Primer》简体中文版何时出版?谁译的?
- opengl中的挑选问题
- TCP WSASend发送成功 完成端口没返回结果
- 如何获取物理磁盘下各个分区的盘符?
我们在一个项目中使用了一个STC12C5616AD的单片机,并使用他们提供的ISP工具来烧程序.他们的ISP工具在串口上安装了一个加密/解密工具,而该ISP工具退出运行时并没有关闭那个加密工具,串口传递到应用程序的数据是经过了转换了的.