社区
嵌入开发(WinCE)
帖子详情
运行EVC编的读串口程序运行一段时间后点击PPC的开始菜单就会死机???
sense
2005-07-29 09:15:09
不知道为什么
...全文
129
11
打赏
收藏
运行EVC编的读串口程序运行一段时间后点击PPC的开始菜单就会死机???
不知道为什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wwch99
2006-04-04
打赏
举报
回复
retrieve=ReceiveBuf后就与ReceiveBuf没有关系了。??
应该是数据拷贝吧 memcpy().移动指针后,局部变量会被释放,全局指针指向非法区域.
sense
2005-08-01
打赏
举报
回复
确定是字符串
Mr_Ldh
2005-08-01
打赏
举报
回复
retrieve是全局的,retrieve=ReceiveBuf后就与ReceiveBuf没有关系了。
但是你能保证ReceiveBuf中接收到的数据一定是字符串吗?
sense
2005-08-01
打赏
举报
回复
会不安全?
那应该怎么做比较好?
samp_miao
2005-08-01
打赏
举报
回复
运行EVC编的读串口程序运行一段时间后点击PPC的开始菜单就会死机???
是死机还是程序占用CPU太多,使得界面上没有变化,你多等一断时间看看。
我当时循环读写COM口时候,耗CPU太多,界面也是很久才看出来变化。
retrieve=ReceiveBuf;
这个ReceiveBuf是一个局部变量,发给主窗口会不会不安全呢?
红牛哥110
2005-07-29
打赏
举报
回复
呵呵,代码有问题,你又没贴 一点代码,很难帮到你.
Mr_Ldh
2005-07-29
打赏
举报
回复
程序有问题。内存溢出,或其它非法操作。
西山小月
2005-07-29
打赏
举报
回复
用什么方式读的,贴代码出来看看
sense
2005-07-29
打赏
举报
回复
我刚学EVC一个星期,做了一个用线程读取串口信息的程序!!
大概会在哪出错!!谁能提点一下!!!
Mr_Ldh
2005-07-29
打赏
举报
回复
对WM_MYMSG消息是如何处理的?
sense
2005-07-29
打赏
举报
回复
问题是我如果不做其他操作,程序就一直没问题啊!
----------------
HANDLE hSerial=NULL;
CString retrieve;
void CPDADlg::OnGpsConnect()
{
// TODO: Add your command handler code here
//WriteFile (hSerial, // 句柄&Byte, // 数据缓冲区地址nByte, // 数据大小&dwNumBytes, // 返回发送出去的字节数NULL // 不支持重叠);
if(hSerial!=NULL && hSerial!=INVALID_HANDLE_VALUE)return;
hSerial = CreateFile(_T("COM1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
/////L"串口打开失败";
if(hSerial == NULL)return;
///配置串口
DCB PortDCB;
PortDCB.DCBlength = sizeof(DCB);
// 默认串口参数
GetCommState(hSerial, &PortDCB);
PortDCB.BaudRate = 9600; // baud
PortDCB.ByteSize = 8; // Number of bits/byte, 4-8
PortDCB.Parity = NOPARITY;
//PortDCB.StopBits = ONESTOPBIT;
PortDCB.StopBits = ONE5STOPBITS;
///L"配置串口失败";
if (! SetCommState(hSerial, &PortDCB))return;
////配置超时值
COMMTIMEOUTS CommTimeouts;
GetCommTimeouts(hSerial, &CommTimeouts);
CommTimeouts.ReadIntervalTimeout = MAXDWORD;
CommTimeouts.ReadTotalTimeoutMultiplier = 10;
CommTimeouts.ReadTotalTimeoutConstant = 10;
CommTimeouts.WriteTotalTimeoutMultiplier = 50;
CommTimeouts.WriteTotalTimeoutConstant = 100;
///L"不能设置超时参数";
if (!SetCommTimeouts(hSerial, &CommTimeouts))return;
AfxBeginThread(ReadThread, NULL);
}
UINT ReadThread(LPVOID pParam)
{
int iCounter = 0;
DWORD dwBytes;
char ReceiveBuf[201]; ///缓冲区的大小
//AfxMessageBox(_T("b"));
SetCommMask (hSerial, EV_RXCHAR); //只接收字符
while (hSerial != INVALID_HANDLE_VALUE && hSerial != NULL)
{
DWORD dwCommStatus;
WaitCommEvent(hSerial, &dwCommStatus, 0);
SetCommMask (hSerial, EV_RXCHAR); ///重新设置要等待的信号 if(!ReadFile(hSerial, &ReceiveBuf, 200, &dwBytes, 0))continue;
ReceiveBuf[dwBytes]=NULL;
retrieve=ReceiveBuf;
SendMessage(AfxGetMainWnd()->m_hWnd,WM_MYMSG,NULL,NULL);//调用自定义事件
Sleep(200);
iCounter = 0; ////清空计数器
}
return 0;
}
EVC
的
串口
通信程序
SDK程序改写而来的MFC类,希望能和致力于WINCE开发的朋友多多交流,由于本人才疏学浅,程序中有许多不完善的地方,请大家指正。我的程序是基于“主动发送请求,被动接收响应”的假设,因此我只设置了一个接收数据的...
EVC
串口
操作程序 SerialPort.rar
EVC
串口
操作程序
串口
初始化\
串口
输出
串口
打印
企业级 VMware vSphere 6.7虚拟化技术配置与管理(下)
第1章 《VMware vSphere 6.7 vMotion配置与管理》主要内容 本章我们详细介绍了冷迁移、通过 vMotion 迁移、通过 Storage vMotion 迁移、CPU 兼容性和
EVC
、在 vSphere Client中迁移已关闭电源或已挂起的虚拟机、将...
自己写得
EVC
4
串口
测试程序,非常好用,希望大家喜欢!
自己写得
EVC
4
串口
测试程序,非常好用,希望大家喜欢!希望能对大家有点用处!
在
EVC
编
的示波器程序
在
EVC
编
的示波器程序,实时显示波形DrawCurve,修改一下就可以应用。
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章