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

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  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ī)器視覺
四個(gè)編程問題,請(qǐng)稍加留意
深圳市雷賽智能控制股份有限公司
收藏本文     查看收藏
No.1 一個(gè)由VB編譯引起的錯(cuò)誤
VB編譯環(huán)境下,常有這樣種事情發(fā)生,第一次初始化控制卡時(shí),往往正常通過,若中途中斷或意外退出,則再次啟動(dòng)程序,則初始化時(shí)卻找不到控制卡了,有時(shí)弄得人很郁悶,一點(diǎn)成熟感都沒有,在沒有別的招的情況下,搞得程序員一怒之下重啟PC才得以好轉(zhuǎn)。然事情卻很讓人不開心。
這個(gè)問題是由VB編譯引起的,由于VB是一種解釋語言,其程序運(yùn)行時(shí)被加載的速度不夠快,故會(huì)把程序調(diào)用的動(dòng)態(tài)庫等資源暫放置內(nèi)存,直到VB整個(gè)軟件結(jié)束才會(huì)釋放。而在調(diào)試控制卡軟件時(shí),由于中途中斷或調(diào)試意外退出,沒有執(zhí)行到控制卡關(guān)閉函數(shù),則控制卡資源還未被釋放,故程序再次運(yùn)行初始化控制卡資源時(shí),則找不到有效的資源了,因而也找不到控制卡了。
解決問題很簡(jiǎn)單,關(guān)閉整個(gè)VB編譯器軟件,以釋放所有資源,再次進(jìn)入即可。此過程稍為麻煩,但比上重啟PC來講,還是稍有效率一些。


No.2
取位運(yùn)算
在使用控制卡編程時(shí),常常碰到取位運(yùn)算的案例,如下面函數(shù):
d3000_get_axis_status
在其《軟件手冊(cè)》上有對(duì)其返回值的每一位進(jìn)行了詳細(xì)說明,即使這樣,有些新手面對(duì)具體編程時(shí),一時(shí)還轉(zhuǎn)不過彎過來。如:要從返回值內(nèi)判斷原點(diǎn)信號(hào)的高低電平狀態(tài)到底該怎樣編程呢,以下列出在C/C++、Basic取位運(yùn)算的代碼片段,其它狀態(tài)位類同:
(注:DMC3000控制卡的原點(diǎn)信號(hào)在d3000_get_axis_status的返回值第9位,從0位開始數(shù))

1
C/C++
DWORD nStatus = d3000_get_axis_status( XCH );//
讀取X軸的專用輸入信號(hào)
//XCH
的值為0

if( (nStatus&(1<<9)) != 0 )
//
高電平或低電平
else
//
低電平或高電平

(用移位方法在《控制卡編程幾招》中有介紹)

2
、 Basic

Dim nStatus as long
nStatus = d3000_get_axis_status ( XCH ) ‘
讀取X軸的專用輸入信號(hào)

if (nStatus and &H200) <> 0 then
//
高電平或低電平
else
//
低電平或高電平
end if

注意:第9位為1時(shí)的十六進(jìn)制數(shù)值為0x200



No.3
關(guān)于大數(shù)平方和平方根溢出的解決方法
平方和平方根的計(jì)算常常遇到,一般都會(huì)用浮點(diǎn)數(shù)來表示,當(dāng)計(jì)算大數(shù)時(shí),由于電腦內(nèi)部定義的數(shù)據(jù)類型字節(jié)寬有限,總會(huì)有溢的可能,如:

double kx = 1000000.0; //
一個(gè)doubleVC++中為64位,在DOS環(huán)境下為32
double ky = 1000000.0;
double len = sqrt( kx * kx + ky * ky );//
求兩者的平方和之根

想必上面的表達(dá)算式大家都見怪不怪了吧,但很容易溢出哦,要是多次系數(shù),就更容易了,那么到底該如何解決這個(gè)問題呢?我們改一下表達(dá)算法,也可達(dá)到同樣效果,可將溢出的機(jī)率大大降低,請(qǐng)看:

double kx = 1000000.0;
double ky = 1000000.0;

ky = (ky/kx); //
注意變化,實(shí)際應(yīng)用時(shí),要避免kx=0.0

double len = kx * sqrt( 1 + ky * ky );
//
想一想,若kx,ky的數(shù)值有效,那么len的值也不會(huì)溢出了

No.4
精確定時(shí)器的實(shí)現(xiàn)(僅用在VC++
MFC
提供的定時(shí)器OnTimer,雖然可以通過SetTimer設(shè)定響應(yīng)時(shí)間間隔,但無論怎樣都不能超過每少20次的調(diào)用頻率,在一些需要精確計(jì)時(shí)的場(chǎng)合當(dāng)然就不適合了。API提供一個(gè)性能較好的函數(shù)GetTickCount,這個(gè)函數(shù)理論上可以跑到毫秒級(jí),但是它的時(shí)間積累誤差很大,而且不可以得到更精確的計(jì)時(shí)。
在《Windows圖形編程》一書當(dāng)中有封裝好的一個(gè)精確計(jì)時(shí)類,可以根據(jù)CPU的時(shí)鐘周期來計(jì)時(shí),夠酷吧,然此書有很多人暫未購得,故由本人做一做義務(wù),公布其主要的核心片段,也足夠大家用了,具體大家再根據(jù)需要去完善吧。

typedef __int64 I64; //
一個(gè)64位整數(shù)類型的定義

I64 GetQueryCount()
{//
返回當(dāng)前時(shí)鐘周期,若不明白以下語法,就不明白,反正能用就行,在NT下也正常
_asm _emit 0x0F
_asm _emit 0x31
}


//
取得1秒中的周期計(jì)數(shù)值
I64 start = GetQueryCount ();
Sleep(1000);
I64 stop = GetQueryCount ();
//
轉(zhuǎn)化成1微秒的計(jì)數(shù)值,可根據(jù)需要進(jìn)行,我在一個(gè)軟件當(dāng)中使用1微秒就夠了
//
單位關(guān)系:1=1000毫秒=1000000微秒
long double fUnit = (long double)(stop-start)*0.000001;//
取得1微秒的時(shí)種周期值

若你想要達(dá)到100微秒中斷一次,則可以寫出下面程序:

I64 nTimers = I64( fUnit * 100 );//
100再轉(zhuǎn)化周期值
I64 nStart = GetQueryCount();
I64 nEnd = nStart;

While(
你的有效循環(huán)條件 )
{
nEnd = GetQueryCount();
if( labs(nEnd – nStart) >= nTimers )
{
做你想做的事情,記得你要作的事情不要太復(fù)雜,以致于運(yùn)行的周期超過自己定義的中斷間隔周期。

nEnd = nStart;
}
else
::DoEvents();//
此函數(shù)在我的相關(guān)文章有詳解,故不贅述
 

狀 態(tài): 離線

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

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