http://www.cnblogs.com/kangwang1988/archive/2010/09/16/1827872.html
解决方案 »
- CListCtrl 自绘结束时,释放资源的问题
- 求救:封装的对话框类为何无法调用虚函数
- DrawText竖着写,汉字数字字母,如何实现这种效果?
- 字符串比较问题
- 初学的一个问题
- 我用了微软提供的检测和枚举设备的程序,不知为什么编译通不过?
- 如何将CString str类型转换为 char a[] 类型,急急!!!
- 如何增加编解码器?
- 救命!请问在程序中如何改变IIS主目录的磁盘路径(我只能最高给20分)
- 关于codeproject上 iocp 例子的 问题
- 终于搞清楚SetWindowPos的hWndInsertAfter参数的作用
- MFC怎么显示进程呢,用ListCtrl 变量来调用,怎么写?用什么函数?
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
在回调函数中用Updatedata()就不行,这句话是什么意思,是更新不了?你的控件绑定数值类型变量了吗?具体的代码是怎么写的?
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
在回调函数中用Updatedata()就不行,这句话是什么意思,是更新不了?你的控件绑定数值类型变量了吗?具体的代码是怎么写的?
double GetFeedbackSignal()
{
double fankui;
UpdateDate();
fankui = m_fankui;
return fankui;
}double GetDemandSignal()
{
double sheding;
UpdateDate();
sheding = m_sheding;
return sheding;
}void SendControlSignal(double x)
{}void CALLBACK PIDControl(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
static double dvalue[3];
static double dOldError;
double dOutSignal; //PID控制的输出
double dError;
double dDemandSignal = GetDemandSignal();
double dFeedbackSignal = GetFeedbackSignal();
UpdateData();
dError = dDemandSignal - dFeedbackSignal;
dvalue[0] = m_KP*dError; //比例
dvalue[1] = dvalue[1]+m_KI*dError*dTimeInterval; //积分
dvalue[2] = m_KD*(dError-dOldError)/ dTimeInterval; //微分
dOutSignal = dvalue[0]+ dvalue[1]+ dvalue[2];
SendControlSignal(dOutSignal); //这个函数是把控制量输出到D/A,然后传送到以后的环节进行控制
}
这是程序,m_KP,m_KI,m_KD就是编辑框中输入的数,m_sheding,m_fankui也是编辑框中的数,是实时采集的
PIDControl是回调函数,我想用一个开始按钮调用timesetevent函数,每1ms调用一次回调函数,还有一个停止按钮,是使用killtimeevent,这怎么实现呢?
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
在回调函数中用Updatedata()就不行,这句话是什么意思,是更新不了?你的控件绑定数值类型变量了吗?具体的代码是怎么写的?
double GetFeedbackSignal()
{
double fankui;
UpdateDate();
fankui = m_fankui;
return fankui;
}double GetDemandSignal()
{
double sheding;
UpdateDate();
sheding = m_sheding;
return sheding;
}void SendControlSignal(double x)
{}void CALLBACK PIDControl(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
static double dvalue[3];
static double dOldError;
double dOutSignal; //PID控制的输出
double dError;
double dDemandSignal = GetDemandSignal();
double dFeedbackSignal = GetFeedbackSignal();
UpdateData();
dError = dDemandSignal - dFeedbackSignal;
dvalue[0] = m_KP*dError; //比例
dvalue[1] = dvalue[1]+m_KI*dError*dTimeInterval; //积分
dvalue[2] = m_KD*(dError-dOldError)/ dTimeInterval; //微分
dOutSignal = dvalue[0]+ dvalue[1]+ dvalue[2];
SendControlSignal(dOutSignal); //这个函数是把控制量输出到D/A,然后传送到以后的环节进行控制
}
这是程序,m_KP,m_KI,m_KD就是编辑框中输入的数,m_sheding,m_fankui也是编辑框中的数,是实时采集的
PIDControl是回调函数,我想用一个开始按钮调用timesetevent函数,每1ms调用一次回调函数,还有一个停止按钮,是使用killtimeevent,这怎么实现呢?
把killtimer写在那个停止按钮的消息处理函数中就可以了
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
在回调函数中用Updatedata()就不行,这句话是什么意思,是更新不了?你的控件绑定数值类型变量了吗?具体的代码是怎么写的?
double GetFeedbackSignal()
{
double fankui;
UpdateDate();
fankui = m_fankui;
return fankui;
}double GetDemandSignal()
{
double sheding;
UpdateDate();
sheding = m_sheding;
return sheding;
}void SendControlSignal(double x)
{}void CALLBACK PIDControl(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
static double dvalue[3];
static double dOldError;
double dOutSignal; //PID控制的输出
double dError;
double dDemandSignal = GetDemandSignal();
double dFeedbackSignal = GetFeedbackSignal();
UpdateData();
dError = dDemandSignal - dFeedbackSignal;
dvalue[0] = m_KP*dError; //比例
dvalue[1] = dvalue[1]+m_KI*dError*dTimeInterval; //积分
dvalue[2] = m_KD*(dError-dOldError)/ dTimeInterval; //微分
dOutSignal = dvalue[0]+ dvalue[1]+ dvalue[2];
SendControlSignal(dOutSignal); //这个函数是把控制量输出到D/A,然后传送到以后的环节进行控制
}
这是程序,m_KP,m_KI,m_KD就是编辑框中输入的数,m_sheding,m_fankui也是编辑框中的数,是实时采集的
PIDControl是回调函数,我想用一个开始按钮调用timesetevent函数,每1ms调用一次回调函数,还有一个停止按钮,是使用killtimeevent,这怎么实现呢?
把killtimer写在那个停止按钮的消息处理函数中就可以了
不行啊,出错啊,错误报告上说UpdateData()没定义,还有那些编辑框对应的变量也出错,开始按钮中直接调用的timesetevent也出错啊,应该是不同的线程,你知道怎么改弄吗
#include "windows.h"
#include <stdio.h>#include "Mmsystem.h"#pragma comment( lib, "Winmm.lib" )void WINAPI mycallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
printf( "comming..\n" );
}int main()
{
MMRESULT mr = timeSetEvent( 1000,0,mycallback,0,TIME_CALLBACK_FUNCTION); MSG msg; while( GetMessage(&msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
} return 0;
}
您好,如果一个界面上有两个编辑框,其中一个编辑框中的数据时实时采集的,在回调函数中对这个编辑框中的数据处理
用timesetevent 1ms调用一次这个回调函数,然后处理后的数据再显示在界面上的编辑框中
现在问题是,如果我在回调函数中用Updatedata()就不行,怎么才能在回调函数中处理编辑框中的数据呢?不上感激啊
在回调函数中用Updatedata()就不行,这句话是什么意思,是更新不了?你的控件绑定数值类型变量了吗?具体的代码是怎么写的?
double GetFeedbackSignal()
{
double fankui;
UpdateDate();
fankui = m_fankui;
return fankui;
}double GetDemandSignal()
{
double sheding;
UpdateDate();
sheding = m_sheding;
return sheding;
}void SendControlSignal(double x)
{}void CALLBACK PIDControl(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
static double dvalue[3];
static double dOldError;
double dOutSignal; //PID控制的输出
double dError;
double dDemandSignal = GetDemandSignal();
double dFeedbackSignal = GetFeedbackSignal();
UpdateData();
dError = dDemandSignal - dFeedbackSignal;
dvalue[0] = m_KP*dError; //比例
dvalue[1] = dvalue[1]+m_KI*dError*dTimeInterval; //积分
dvalue[2] = m_KD*(dError-dOldError)/ dTimeInterval; //微分
dOutSignal = dvalue[0]+ dvalue[1]+ dvalue[2];
SendControlSignal(dOutSignal); //这个函数是把控制量输出到D/A,然后传送到以后的环节进行控制
}
这是程序,m_KP,m_KI,m_KD就是编辑框中输入的数,m_sheding,m_fankui也是编辑框中的数,是实时采集的
PIDControl是回调函数,我想用一个开始按钮调用timesetevent函数,每1ms调用一次回调函数,还有一个停止按钮,是使用killtimeevent,这怎么实现呢?
把killtimer写在那个停止按钮的消息处理函数中就可以了
不行啊,出错啊,错误报告上说UpdateData()没定义,还有那些编辑框对应的变量也出错,开始按钮中直接调用的timesetevent也出错啊,应该是不同的线程,你知道怎么改弄吗UpDateData();用这个的前提是给控件绑定的变量是value的变量