<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        中華工控網首頁
          P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
          電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        四個編程問題,請稍加留意
        深圳市雷賽智能控制股份有限公司
        收藏本文     查看收藏
        No.1 一個由VB編譯引起的錯誤
        VB編譯環境下,常有這樣種事情發生,第一次初始化控制卡時,往往正常通過,若中途中斷或意外退出,則再次啟動程序,則初始化時卻找不到控制卡了,有時弄得人很郁悶,一點成熟感都沒有,在沒有別的招的情況下,搞得程序員一怒之下重啟PC才得以好轉。然事情卻很讓人不開心。
        這個問題是由VB編譯引起的,由于VB是一種解釋語言,其程序運行時被加載的速度不夠快,故會把程序調用的動態庫等資源暫放置內存,直到VB整個軟件結束才會釋放。而在調試控制卡軟件時,由于中途中斷或調試意外退出,沒有執行到控制卡關閉函數,則控制卡資源還未被釋放,故程序再次運行初始化控制卡資源時,則找不到有效的資源了,因而也找不到控制卡了。
        解決問題很簡單,關閉整個VB編譯器軟件,以釋放所有資源,再次進入即可。此過程稍為麻煩,但比上重啟PC來講,還是稍有效率一些。


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

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

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

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

        2
        Basic

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

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

        注意:第9位為1時的十六進制數值為0x200



        No.3
        關于大數平方和平方根溢出的解決方法
        平方和平方根的計算常常遇到,一般都會用浮點數來表示,當計算大數時,由于電腦內部定義的數據類型字節寬有限,總會有溢的可能,如:

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

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

        double kx = 1000000.0;
        double ky = 1000000.0;

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

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

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

        typedef __int64 I64; //
        一個64位整數類型的定義

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


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

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

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

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

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

        狀 態: 離線

        公司簡介
        產品目錄

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

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

        主站蜘蛛池模板: 久久99精品久久久久久青青| 伊人久久大香线蕉av一区| 日本中文字幕一区二区三| 看全黄大色黄大片视频| 18禁床震无遮掩视频| 国产盗摄xxxx视频xxxx| 亚洲色大成网站www永久男同| 亚洲欧洲∨国产一区二区三区| 亚洲国产精品午夜福利| 色妞永久免费视频| 东京热加勒比无码少妇| 大帝AV在线一区二区三区| 强奷漂亮少妇高潮伦理| 国产自产一区二区三区视频| 欧美日韩精品一区二区视频| 18黑白丝水手服自慰喷水| 精品国产成人午夜福利| 90后极品粉嫩小泬20p| 久久国产免费直播| 亚洲国产亚洲综合在线尤物| 日韩欧美第一区二区三区| 一区二区三区国产偷拍| 欧美精品1区2区| 精品少妇后入一区二区三区| 国产很色很黄很大爽的视频| 日韩精品一区二区三区在线观看的| 精品视频一区二区三区不卡 | 精品蜜臀国产av一区二区| 亚洲av无码成人影院一区| 亚洲欧洲日韩国内高清| 亚洲日本欧美日韩中文字幕| 精品乱码一区二区三四五区| 亚洲v欧美v日韩v国产v| 亚洲精品国产综合久久一线| 亚洲人成网站免费播放| a级国产乱理伦片在线观看al| 高级艳妇交换俱乐部小说 | 国产毛片精品av一区二区| 天天摸天天操免费播放小视频| 欧美性开放免费网站| 亚洲一区在线成人av|