mfc与驱动通信的有关问题(欢迎大家参与讨论)
mfc与驱动通信的问题(欢迎大家参与讨论)
本人现在驱动已经有了,需要将里面的数据采集变显示到mfc编写的界面上面去
基本的函数介绍如下:
API_open();///主要是接口的处理 打开驱动接口
API_start();///主要功能启动驱动的定时程序 里面包含IOCTL_Start_DPC 的函数,并进行内存空间的申请。
read();//// 主要功能是读出缓冲区里面的数据,并减少已经申请的空间的数量。
stop();//// 功能为停止定时器计时
现在mfc里面的功能是想实现点击一个按钮进行数据采集,按钮上有开始 和停止 初始为开始 点击一下变为停止 再点 变为开始
当点击开始时采集数据
现在的问题是由于读数据和API_start()需要一直读写 直到点击停止时结束
所以我用了死循环进行读数据,
CString s;
GetDlgItemText(IDOK,s);
if(s=="开始")
{
SetDlgItemText(IDOK,"停止");
while(1)
{
if(start1)
{
API_start();
::Sleep(25);
start1=false;
}
while(1)
{
read(signal,POINT_SIZE*10);
if((API_Read(show, stop1, page)==-1)&&(s=="停止")) // API_Read()读完1200个点后返回-1 stop();
;}
}
break;
}
}
else
{SetDlgItemText(IDOK,"开始");
但是好像程序一直在循环 处于不可停止的状态,很无语 ,大侠们有没有什么好的方法解决啊!使得开始和停止可以操作。
------解决方案--------------------
CreateThread()函数. 具体用法看msdn. 另外的要点我前几天已经回答你过.
------解决方案--------------------
(1)不求大改动的话,最好用多线程做,开一个线程在那读数据就ok了。
(2)还有种方法用定时器驱动读信息函数。
(3)如果自己编的驱动的话最好的方法还是改写驱动,最彻底。通过IOCTL发送一个回调函数指针给驱动程序,下位机采集完信息执行该函数,通过回调函数将采集信息发给应用程序。这种修改的话执行效率最高。
本人现在驱动已经有了,需要将里面的数据采集变显示到mfc编写的界面上面去
基本的函数介绍如下:
API_open();///主要是接口的处理 打开驱动接口
API_start();///主要功能启动驱动的定时程序 里面包含IOCTL_Start_DPC 的函数,并进行内存空间的申请。
read();//// 主要功能是读出缓冲区里面的数据,并减少已经申请的空间的数量。
stop();//// 功能为停止定时器计时
现在mfc里面的功能是想实现点击一个按钮进行数据采集,按钮上有开始 和停止 初始为开始 点击一下变为停止 再点 变为开始
当点击开始时采集数据
现在的问题是由于读数据和API_start()需要一直读写 直到点击停止时结束
所以我用了死循环进行读数据,
CString s;
GetDlgItemText(IDOK,s);
if(s=="开始")
{
SetDlgItemText(IDOK,"停止");
while(1)
{
if(start1)
{
API_start();
::Sleep(25);
start1=false;
}
while(1)
{
read(signal,POINT_SIZE*10);
if((API_Read(show, stop1, page)==-1)&&(s=="停止")) // API_Read()读完1200个点后返回-1 stop();
;}
}
break;
}
}
else
{SetDlgItemText(IDOK,"开始");
但是好像程序一直在循环 处于不可停止的状态,很无语 ,大侠们有没有什么好的方法解决啊!使得开始和停止可以操作。
------解决方案--------------------
CreateThread()函数. 具体用法看msdn. 另外的要点我前几天已经回答你过.
------解决方案--------------------
(1)不求大改动的话,最好用多线程做,开一个线程在那读数据就ok了。
(2)还有种方法用定时器驱动读信息函数。
(3)如果自己编的驱动的话最好的方法还是改写驱动,最彻底。通过IOCTL发送一个回调函数指针给驱动程序,下位机采集完信息执行该函数,通过回调函数将采集信息发给应用程序。这种修改的话执行效率最高。