国产一区二区三区毛片_亚洲乱码AV中文一区二区_亚洲精品无码专区在线播放_日韩欧美一二_咪咪av影院_欧久久av一区二区

peteryi
級別: 正式會員
精華主題: 0
發帖數量: 7 個
工控威望: 97 點
下載積分: 583 分
在線時間: 2(小時)
注冊時間: 2014-10-28
最后登錄: 2019-07-31
查看peteryi的 主題 / 回貼
樓主  發表于: 2014-10-28 19:56
最近手上有個威綸通MT6056I的HMI,需要與公司的一款板卡通訊,板卡遵循的是自由協議,但是采用的校驗方式CRC-16/XMODEM.
這種校驗方式是CRC16校驗方式的一種,但是與MODBUS協議的CRC16的生成方式不同。威綸通的腳本語言庫中有CRC校驗函數,但是這個校驗
函數是CRC-16/MODBUS版本的,不能為我所用,所以我計劃自己設計一個CRC16/XMODEM的函數,然后將這個函數保存到函數庫里,以備他用
。由于第一次使用這個屏幕,經驗不做,遇到一些困難,但也努力解決了。
        首先不得不吐槽下,威綸通的宏指令說明書寫的太簡單了,在遇到問題的時候,可能無法從指令的說明手冊上找到答案,更多的是自己摸索。比如
自己寫子函數時就遇到狗血的問題
       1:數組不能作為函數參數
            比如
                        sub short function(char dat[],char len)
            其中 char dat[] 參數將出錯。
            解決方法,后面有表述
       2: 在調用子函數的時候,在函數的參數中不能出現常量,只能是變量的方式
           例如我定義了子函數 function( short a,short b)
           調用方式  function( 1000,1000)  編譯器將會告訴你參數類型錯誤
           當我改成如下掉用方式就可以了
            short i=1000
            short j=1000
            function(i,j)
  
      好進入正題吧,如何寫個CRC校驗函數,其實根本問題,是如何將一串數據傳給子函數,子函數將傳過來的數據根據特定算法,運算出計算結果,關于CRC算法,本文不做論述,只提供代碼。
我首先想到的是這樣的思路:定義 這樣一個函數 short CRC16(short dat[],short len),用來計算CRC。
但是卻遇到了上面1中的問題,數組參數無法作為函數的形參,官方也找不到解決方法。
最后想到的解決方法是在LW存儲區開辟一塊暫存區域,將要進行CRC計算的數據搬運到這塊暫存區域上。再CRC校驗函數中根據LW的地址將數據取出,進行CRC計算。
如此可解決無法傳遞數組參數的問題。操作如下。
        定義  sub short CRC_16(short dataddr, short len)
       參數說明 short dataddr,dataddr是位于LW暫存區的起始地址,short len len 數據長度。
         下面紅色區域為重點區域,注意理解。

   sub short CRC_16(short dataddr, short len)
    short i, j
    unsigned short crc_reg = 0x0000
    unsigned short current
    unsigned char dattmp[128]    //申請一定長度的數組來保存要進行校驗的數據。
    GetData(dattmp[0], "Local HMI", LW, dataddr, len)//將暫存區的數據復制到dattmp中

    len=len-1
    for i = 0 to len
        current = dattmp
        current=current<<8
        crc_reg=crc_reg^current
      
        for j = 1 to 8
      
            if (crc_reg & 0x8000) <> 0 then
                crc_reg = (crc_reg << 1) ^ 0x1021
            else
                crc_reg=crc_reg << 1
            end if
        next
      

    next
    return crc_reg;
end sub

  上面綠色部分是進行CRC計算的,這里不做研究。下面來講講紅色部分。紅色部分就是申請數組空間,然后,將LW,暫存空間的數據,轉移到所申請的數組中,交給下面計算。
  這里的疑惑是為何要申請數組,然后在拷貝數據,這么麻煩,而不是用下面的方式進行,下面的算法是每次循環開始先讀取暫存空間數據,先不說犧牲時間什么的,最起碼這
中不用申請上面那128大的數組。理論可行,但是實際上確實錯誤的。其主要GetData和SetData 函數實現原理,以及數據在LW中存儲方式不清楚造成的。
sub short CRC_16_2(short dataddr, short len)
    short i, j
    unsigned short crc_reg = 0x0000
    unsigned short current
    unsigned char dattmp
    short addr
    addr=dataddr
    len=len-1
  
    for i = 0 to len

       GetData(dattmp, "Local HMI", LW, addr, 1)
        addr=addr+1
        current = dattmp

        current=current<<8
        crc_reg=crc_reg^current
      
        for j = 1 to 8
      
            if (crc_reg & 0x8000) <> 0 then
                crc_reg = (crc_reg << 1) ^ 0x1021
            else
                crc_reg=crc_reg << 1
            end if
        next
      
    next
    return crc_reg;
end sub



GetData和SetData 函數實現原理,以及數據在LW中存儲方式
先來說說LW中的數據存儲 (吐槽:為何網上關于這方面的資料很少,幾乎沒有LW存儲空間的詳細說明)
目前 筆者使用 軟件 EB8000 V4.65

LW 可理解為計算機的RAM ,掉電數據不保存,但是存取速度快。每個存儲單元是16bit。分為高字節 (bit15-bit8)和低字節(bit7 -bit 0)
bit15                                                            bit0


例如 0x1234 存儲方式為高字節 0x12 ,低字節0x34.

SetData 當用SetData 來寫LW中的數據的時候,會根據第一個參數的類型來指導操作

                    如下程序,這是正常的操作程序。a的類型是short
unsigned short a=0x1234
unsigned char b[2]
unsigned char c
SetData(a, "Local HMI", LW, 0, 1)
GetData(c, "Local HMI", LW, 0, 1)
GetData(b[0], "Local HMI", LW, 0, 2)
TRACE("C = %d", c)                    //c=0x34
TRACE("b[0] = %d", b[0])          //b[0]=0x34
TRACE("b[1] = %d", b[1])         //b[1]=0x12

但是SetData的第一個參數是第一個char類型的數組如下
unsigned short a
unsigned char b[2]
b[1]=0x12
b[0]=0x34
SetData(b[0], "Local HMI", LW, 0, 2)
GetData(a, "Local HMI", LW, 0, 1)
TRACE("a = %d", a) //a=0x1234

可以看出,在保存char 型數據的時候,為了節省空間進行了特別處理
理論上b[0]應該保存在LW0000,b[1]保存在LW0001.但是實際上確實b[0]保存在 LW0000的低字節,b[1]保存在LW0000的高字節。

同樣的道理GetData 也遵循相同的操作。

現在能回答為何不能采用第二種子函數寫法.主要原因是 每次循環都是讀取一個字的底字節。高字節數據被丟棄了。
假如寫入內存的是b[0]到b[10],則通過下面循環讀取的是b[0],b[2],b[4].....,請好好體會。
    for i = 0 to len

       GetData(dattmp, "Local HMI", LW, addr, 1)
        addr=addr+1
        current = dattmp
    next

再需要調用CRC函數的時候,可用如下的方法操作
        char sendbus[26]

        short lwadd=7000 //lw 暫存區開始地址
        short len=26        
        SetData(sendbuf[1], "Local HMI", LW, lwadd, len)   //將得計算的數阻搬到LW7000開始的空間,具體在什么地址,可自己安排,只要注意LW 范                                                                                        //0-9000
        tmp = CRC_16(lwadd, len)                                //CRC計算

版權申明:本文章由逸創論壇(www.yeecon.com)原創,轉載請標明出處:http://www.yeecon.com/forum.php?mod=viewthread&tid=74&fromuid=1
(出處: 逸控BBS)

由于本人知識有限,文中如有錯誤,請告知。
作者:semonpic    
E-Mail: semonping@163.com
企鵝號 442999791
[ 此帖被peteryi在2014-10-28 20:45重新編輯 ]

主站蜘蛛池模板: 在线黄色免费观看_国产精品午夜无码av体验区_国产精品免费_区二区三区观看_国产成人欧美_久久精品第一页_四川丰满少妇A级毛片_日韩欧美特级片_色哟哟一区二区 | 国产精品久久久久久2021_91久久老司机福利精品网_亚洲色大成网站WWW永久在线观看_特黄熟妇丰满人妻无码_999久久久精品视频_无码AV永久免费专区麻豆_欧美激情一区二区三区成人_亚洲人成人天堂 | 欧美多毛肥胖老妇做爰_caoporn国产精品免费公开_蜜臀亚洲av永久无码精品老司机_男人狂桶女人高潮嗷嗷叫_精品在线视频免费在线观看视频_亚州福利视频_国产精品视频网_一区二区狠狠色丁香久久婷婷 | 益日韩欧群交P片内射中文_1313午夜精品理论片_综合爱爱网_纯肉无遮挡h肉动漫在线观看3d_男人的天堂久久精品_99久久精品午夜一区二区_亚洲七七久久桃花影院_国产91色在线亚洲 | 91性高潮久久久久久久_五月花激情网_二区三区国产_3344在线永久观看视频播放_一区二区三区四区AV_国产爆初菊在线观看免费视频网站_日韩在线一区二区三区免费视频_久久国产a | 天天操导航_久久国内精品自在自线图片_av夜色_啪啪自拍视频_日韩在线精品中文字幕一区二区_亚洲精品久久一区二区三区_CHINASEX喷水VIDEOS中国少妇_久草视频网址 | 少妇厨房愉情理9仑片视频_成人免费在线观看网址_国产成人无码精品一区不卡_久久看av_97超碰福利久久精品_美女一级黄色大片_国产欧美日韩一区二区三区四区_亚洲AV嫩草AV极品A片 | 亚洲AV无码成人网站手机观看_中文字幕不卡乱偷在线观看_综合色站导航_亚洲一级图片_青天衙门第一部免费观看_天天搞夜夜骑_在线视频夫妻内射_国产黄色av免费看 | 成人免费无码大片A毛片软件_学园默示录在线看_九一国产精品视频_狠狠狠狼鲁亚洲综合网_91亚洲精品久久久蜜桃_免费无码又爽又刺激高潮软件_欧美疯狂性受XXXXX另类_日韩少妇乱码一区二区三区免费 | 国产午夜福利在线观看视频_四虎1515永久免费_少妇高潮惨叫久久久久久_色综合久久婷婷五月_日韩一区网站_国产精品色内内在线播放_中国鲜肉GAY高中XX禁18网站_91九色porny老版 绝顶丰满少妇av无码_国产精品一区欧美_国产精品色哟哟_日韩淫视频_老熟妇仑乱视频一区二区_亚洲欧美中文日韩在线v日本野外_欧美乱偷一区二区三区在线_成人在线观看www | 四虎免费观看_日韩在线91_国产观看99_91婷婷射_亚洲精选中文字幕_色yeye高清在线视频_亚洲日韩成人无码不卡_一区二区三区日韩视频 | 国产亲子私乱av_欧洲人激情毛片无码视频_欧美在线一区二区三区_天天拍天天草_天天干天天操好逼_好爽好黄的视频_狠狠综合久久av一区二区老牛_91视频论坛 | 中文字幕55页_亚洲国产精品无码久久久五月天_麻豆短视频传媒_免费色视频在线观看_一区二区三区无码免费看_免费一级做a爰片性色毛片_亚洲欧美一级_久久久亚洲蜜桃 | 妇女性内射冈站HDWWWOOO_亚洲av无码av日韩av网站_青草欧美亚洲a视频在线_福禄影院午夜伦_亚洲美女影院_日日操操_国产偷窥熟女精品视频大全_国产在线一区二区三区AV | 456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费_中文字幕一区三级久久日本_国产91精品看黄网站在线观看 | 日本乱码卡一卡2卡3卡三卡四_国产亚洲精品成人_嘿咻嘿咻男女免费专区_亚洲精品网站在线观看你懂的_57pao国产一区二区_黄片123_欧洲另类交_亚洲青涩在线 | 午夜精品成人福利_麻豆涩涩_九九热精品视频在线播放_中文字幕日韩专区_欧美极品xxxxx_午夜寂寞支持安卓精品_靠逼视频在线免费观看_一区二区三区视频免费观看 | 午夜aaa_毛片免费观看视频_一级久久_又湿又紧又大又爽又a视频_四虎午夜剧场_中文字母av_毛片毛片毛片毛_日韩午夜伦伦午夜伦老司机 | 亚洲精品成人无限看_亚洲精华液_国产剧情素人搭讪在线_日本久久高清一区二区三区毛片_国产一区高清_黄秋生伊波拉病毒_亚洲国产成人精品久久一区二区_中国av中文字幕 | 国产免费黄色片_久久午夜免费视频_麻豆影视在线免费观看_成人三级做爰av_久久精品中文闷骚内射_美女视频黄的免费_人妻无码一区二区三区_亚洲特黄毛片 | 欧美黄色片在线观看_欧美视频在线免费看_中国少妇xxxⅹ性xxxx_超碰手机在线_亚洲日本欧美_51社区在线永久免费视频_欧美一级二级片_久久经典免费视频 | 国产亚洲亚洲_欧美日韩中文字幕一区二区_色小妹一二三区_91成人无码免费一区二区尤物_成人av72_猫咪永久在线成人免费网站_www.色人阁.com_168黄色网 | 国内精品久久久久久不卡影院_国产清纯美女白浆在线播放_aav在线_日韩成人一区二区三区在线观看_欧美在线_欧美人与拘性视交_欧美视频成人_国产情侣一区二区| 手机在线播放国产女主播_国产精品一区二区久久不卡小说_久久夜靖品2区_精品视频色一区_品久久久久久久久久96高清_农村乱视频一区二区三区_久久久久无码精品国产情侣_黄又色又污又爽又高潮动态图 | 久久网站热最新地址4_www色.com_饥渴少妇浪潮AV麻豆传煤_欧美色五月_伊人成伊人成综合网222_CHINESE玩弄老年熟女_成人午夜视频在线_日本婷婷免费久久毛片 | 日本亚洲欧美高清专区vr专区_国产69av_国产亚洲露脸在线观看_天天干成人网_黄色的视频免费_国产精品久久久久久久久图文区_中文在线中文字幕_一级毛片网 | 国产亲子私乱av_欧洲人激情毛片无码视频_欧美在线一区二区三区_天天拍天天草_天天干天天操好逼_好爽好黄的视频_狠狠综合久久av一区二区老牛_91视频论坛 | 欧美三级黄色大片_亚洲韩国一区二区_亚洲精品岛国片在线观看_国外一级黄色片_91看片淫黄大片91桃色_1314酒色网_国产夫妻自拍小视频_久久精品国产亚洲aa级女大片 | 玖玖视频精品_国产丝袜无码一区二区视频_黄色avav_av免费国产_麻豆果传媒成人A片免费看_国产一区二区三区精品av_性欧美videofree高清69_成视频年人黄网站视频福利 | 四虎免费观看_日韩在线91_国产观看99_91婷婷射_亚洲精选中文字幕_色yeye高清在线视频_亚洲日韩成人无码不卡_一区二区三区日韩视频 | 国产一级性片_性欧美另类_精品视频一区二区在线_国产成人无码AⅤ片在线观看_国产一级一级一级_一级黄色大片在线_国产a爱_在线看片日韩 | 高清不卡免费视频_猛烈顶弄H禁欲老师H春潮视频_国产老肥熟精品大全_亚洲欧美成人a毛片_亚洲精品在_第一区免费在线观看_免费国产自久久久久三四区久久_亚洲男人的天堂网 | 久热这里只有精品12_麻豆国产在线视频_国产日韩欧美精品一区_成年片色大黄全免费网无需安装_久久伊人少妇熟女大香线蕉_在线不卡中文字幕一区_欧美大胆丰满熟妇XXBB_国产精品久久中文 | av夜夜操_夜夜骑夜夜操_大片一级_色婷在线_国产精品乱码高清在线观看免费_最新亚洲视频_视频一区二区中文字幕日韩_一区一区三区 中文字幕国产_亚洲精品影院_麻豆av高清_无码中文亚洲AV影音先锋_国产97久久_精品一区二区三区视频_欧美在线视频网_男人影院在线观看www | 高清不卡免费视频_猛烈顶弄H禁欲老师H春潮视频_国产老肥熟精品大全_亚洲欧美成人a毛片_亚洲精品在_第一区免费在线观看_免费国产自久久久久三四区久久_亚洲男人的天堂网 | 91精品国产色综合久久不卡98_免费国产成人肉肉视频大全_日本熟妇xxxx_日本高清免费观看_看片1区_俺去鲁婷婷六月色综合_日韩精品一区二区亚洲AV观看_青青久久国产 | 日韩精品一区二区午夜成人版_亚洲精品乱码久久久久久蜜桃不爽_猫咪最新永久在线网站_欧美一区二区三区久久综_天天干夜夜爱_亚洲精品一区二三区不卡_日本黄色片免费看_在线播放黄色网址 | 色播基地_久久精品女人天堂av_日韩精品卡1卡2三卡四卡乱码_亚洲国产精品无码AAA片_国产精品久久久久毛片软件_欧美男男大粗吊1069_免费看av大片_一个人看的www免费高清在线视频 | 国产精品久久久久国产精品三级_免费观看老乱熟视频_日韩精品在线视频观看_天海翼精品一区二区三区_亚洲一线视频_四虎伊人_国内精品小视频_人妻出轨和黑人疯狂做国产人 国产精品国产三级国产av′_www国产精品_www.精品视频_奇米在线7777在线精品_性生交裸片免费看_91爱观看在线_夜夜草影院_中文字幕亚洲日本 | a级高清免费毛片av在线_日韩乱视频_久久九九高潮毛片免费全部播放_少妇BBWBBW高潮_黑色东京在线观看_亚洲欧洲日产国码无码AV一_韩国日本美国免费毛片_国产精品69久久久久水密桃 | 最爱高潮全过程免费的视频_日韩免费无码不卡夜夜爽_国产乱子伦一区二区三区国色天香_日日操天天操_中文久久久久久_91欧美激情一区二区三区成人_男男做喘息gv奶白小受动图_国产三及片网站 狠狠搞综合_国产精品欧美亚洲制服_久久久性视频_国产调教性奴在线观看w_狠狠色婷婷久久一区二区三区麻豆_www.青青草_超碰在线资源站_草在线免费观看 |