999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁(yè) 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁(yè)
  P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場(chǎng)檢測(cè)儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場(chǎng)總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測(cè)控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺(jué)
DMC3000控制卡的多任務(wù)編程
深圳市雷賽智能控制股份有限公司
收藏本文     查看收藏
以愚人之見(jiàn),運(yùn)動(dòng)控制的編程使用多任務(wù)確實(shí)令人不可理解,因本人的理論是在數(shù)控行業(yè)編程,越是簡(jiǎn)單就越好操作。但既有客戶的需求,那也得進(jìn)行編程測(cè)試一下,畢竟實(shí)踐出真知嘛。
從理論上講,Window比較大牌的編譯都是支持多任務(wù)編程(即多線程)。以下,為了使事情更簡(jiǎn)化,本人從VC6.0環(huán)境下寫(xiě)成一段小小代碼,配上一些注釋?zhuān)芰艘越饷鳌?/SPAN>
本例程序基本思路是這樣的,開(kāi)辟一個(gè)新的線程,在線程中不斷顯示位置。以下列出相關(guān)步聚:

1
、在可視類(lèi)(如Cdialog)聲明兩個(gè)變量
CWinThread *pThread; //
線程變量
BOOL bActive
; //狀態(tài),用于終止線程

2
、給變量初始化,至于構(gòu)造函數(shù)中
pThread = NULL;
bActive = FALSE;
3
、在初始化控制成功后,分配并激活線程工作
以下部分是在OnInitDialog()中完成的
if( d3000_board_init() <= 0 )
MessageBox(Fail initial );
Else
{
pThread = AfxBeginThread( //
創(chuàng)建一個(gè)線程
(AFX_THREADPROC)TaskFunc, //
這是線程的工作內(nèi)容,一個(gè)函數(shù)指針
(LPVOID)&m_hWnd, //
傳入當(dāng)前可視類(lèi)的句柄
THREAD_PRIORITY_NORMAL,//
優(yōu)先級(jí)正常
0, //
無(wú)堆棧
CREATE_SUSPENDED//
線程被創(chuàng)建時(shí)即刻掛起
);
if( pThread != NULL )
{
bActive = TRUE;//
允許線程工作
pThread->ResumeThread();//
開(kāi)始工作
}
}
若需要更多了解AfxBeginThread函數(shù),可參見(jiàn)MSDN說(shuō)明

4
、為線程分配一個(gè)工作
這個(gè)工作就是讀取板卡的位置,注意此函數(shù)為靜態(tài)函數(shù)
UINT CTaskDlg::TaskFunc(LPVOID lParam)
{
CTaskDlg * pDlg = (CTaskDlg *)FromHandle(*((HWND *)lParam));//
將句柄恢復(fù)成可視類(lèi)
if( pDlg == NULL )
return 0;

static CString string;
long nStart = ::GetTickCount(),nEnd(nStart);
while( pDlg->bActive )//
當(dāng)bActiveFALSE工作結(jié)束
{
nEnd = ::GetTickCount();
if( labs(nEnd - nStart) >= 100 )//100
毫米刷新一次,因?yàn)榫程執(zhí)行速度比定時(shí)要快很多,頻繁高速的刷新反而讓人看不清,要不去掉else continue即可。
{
nStart = nEnd;
}
else continue;

string.Format("Position:%ld, %ld, %ld, %ld",
long(d3000_get_command(0)),
long(d3000_get_command(1)),
long(d3000_get_command(2)),
long(d3000_get_command(3)));
//
取得四軸的脈沖位置,并刷新到一個(gè)ID名為IDC_STATIC_COUNT控件上
pDlg->GetDlgItem( IDC_STATIC_POSITION )->SetWindowText( string );
}
return 1;
}

5
、結(jié)束線程
此段代碼放置于OnDestroy()函數(shù)中
bActive=FALSE; //
停止線程工作
delete pThread; //
刪除線程(可以不需要此語(yǔ)句,創(chuàng)建線程時(shí)若不特別指定,線程會(huì)自動(dòng)被刪除)。
d3000_board_close();//
關(guān)閉控制卡須放大線程結(jié)束后,否則線程讀到的位置會(huì)不正確

6
、后記補(bǔ)充
據(jù)我所知,要是用線程來(lái)作實(shí)時(shí)性強(qiáng)的過(guò)程控制將是個(gè)不錯(cuò)的選擇,因?yàn)槎〞r(shí)器的響應(yīng)速度太慢,不及線程執(zhí)行速度快。若想更多了解過(guò)程控制編程的特點(diǎn),可參見(jiàn)另一篇《過(guò)程控制編程探計(jì)》。
 

狀 態(tài): 離線

公司簡(jiǎn)介
產(chǎn)品目錄

公司名稱: 深圳市雷賽智能控制股份有限公司
聯(lián) 系 人: 梁邦敏
電  話: 755-26401178
傳  真:
地  址: 深圳市南山區(qū)登良路天安南油工業(yè)區(qū)2棟3樓
郵  編: 518000
主  頁(yè):
 
該廠商相關(guān)技術(shù)文摘:
CNC解釋庫(kù)調(diào)用接口詳述
DMC1000控制卡不能響應(yīng)系統(tǒng)消息
DMC2000脈沖速度初始化故障
DMC2000運(yùn)動(dòng)控制卡常見(jiàn)軟件問(wèn)題的解決方案
DMC2200驅(qū)動(dòng)程序特殊安裝方法
DMC3000控制卡,與CNC之G代碼的邦定關(guān)系
多類(lèi)型運(yùn)動(dòng)控制卡編程方法探討
多線程與控制卡編程
發(fā)現(xiàn)步進(jìn)電機(jī)定位不準(zhǔn)怎么辦
過(guò)程控制編程之簡(jiǎn)要探討
控制卡應(yīng)用編程技巧幾招(2)
更多文摘...
立即發(fā)送詢問(wèn)信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊(cè)為中華工控網(wǎng)會(huì)員
請(qǐng)留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved