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

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

1
、在可視類(如Cdialog)聲明兩個變量
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)建一個線程
(AFX_THREADPROC)TaskFunc, //
這是線程的工作內(nèi)容,一個函數(shù)指針
(LPVOID)&m_hWnd, //
傳入當前可視類的句柄
THREAD_PRIORITY_NORMAL,//
優(yōu)先級正常
0, //
無堆棧
CREATE_SUSPENDED//
線程被創(chuàng)建時即刻掛起
);
if( pThread != NULL )
{
bActive = TRUE;//
允許線程工作
pThread->ResumeThread();//
開始工作
}
}
若需要更多了解AfxBeginThread函數(shù),可參見MSDN說明

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

static CString string;
long nStart = ::GetTickCount(),nEnd(nStart);
while( pDlg->bActive )//
bActiveFALSE工作結(jié)束
{
nEnd = ::GetTickCount();
if( labs(nEnd - nStart) >= 100 )//100
毫米刷新一次,因為線程執(zhí)行速度比定時要快很多,頻繁高速的刷新反而讓人看不清,要不去掉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)));
//
取得四軸的脈沖位置,并刷新到一個ID名為IDC_STATIC_COUNT控件上
pDlg->GetDlgItem( IDC_STATIC_POSITION )->SetWindowText( string );
}
return 1;
}

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

6
、后記補充
據(jù)我所知,要是用線程來作實時性強的過程控制將是個不錯的選擇,因為定時器的響應速度太慢,不及線程執(zhí)行速度快。若想更多了解過程控制編程的特點,可參見另一篇《過程控制編程探計》。
 

狀 態(tài): 離線

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

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

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