成人精品一区二区久久久 I 国产美女永久无遮挡 I 中文字幕+乱码+中文字幕明步 I 国产在视频一区二区三区吞精 I 日韩精品小视频 I 成人性生交大片免费4 I 免费aaa级毛片在线视频 I 一级片毛片 I 大型成人社区 I 国模在线播放 I 欧美大荫蒂毛茸茸视频 I 偷偷色噜狠狠狠狠的777米奇 I www.久久亚洲 I 日日搞夜夜操 I 亚洲成色777777女色窝 I 毛片黄色毛片 I 午夜片在线观看 I 国产一区二区三区中文字幕 I 天天干夜夜骑 I 日韩在线视频一区二区三区 I 久久久无码精品亚洲a片0000 I 写真福利片hd在线播放 I 欧美成人一区二免费视频 I 色噜噜狠狠爱综合视频 I 中文字幕无线码免费人妻 I 国产精品久久久久久久久久不蜜臀 I 欧美综合人人做人人爱 I 1024成人网色www I 国产精品视频一二三区 I 亚洲免费美女视频

peteryi
級別: 正式會員
精華主題: 0
發帖數量: 6 個
工控威望: 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无码一区二区三区不卡 | 天干天干天啪啪夜爽爽av网站 | 99久久99久久精品国产片 | 欧美日韩高清 | 狠狠色狠狠色综合日日92 | 久久精品国产精品亚洲红杏 | 2023天天操 | 国产成人亚洲综合图区 | 东京热男人av天堂 | 国产黄色片一级三级 | 国产欧美熟妇另类久久久 | 国精产品一区一区三区有限在线 | 又黄又爽又色视频免费 | 国内精品美女a∨在线播放 人成乱码一区二区三区 | 免费视频爱爱太爽了 | 欧美黑人巨大videos精品男男 | 色综合天天视频在线观看 | 亚洲电影区图片区小说区 | 日韩精品一区二区三区亚洲综合 | 成年片色大黄全免费网站久久高潮 | 欧美色aⅴ欧美综合色 | 高清中文字幕 | 五月婷婷激色号网 | av大片在线无码永久免费 | 动漫三级| 天天躁夜夜躁天干天干2020 | 国产一三四2021不卡 | 第一色在线 | 国产刚发育娇小性色xxxxx | 手机av在线不卡 | 欧美精品乱码99久久蜜桃 | 国产成人一卡2卡3卡四卡视频 | 曰本一道本久久88不卡 | 色屁屁www免费看欧美激情 | 久草影视网 | 久久久久无码中 | 亚洲中文字幕无码永久免弗 | 女乱高潮久久久久久爽爽 | 国内国内在线自偷第68页 | 国产特黄级aaaaa片免 | 2019国产品在线视频 | 欧美综合日韩 | 蜜桃视频在线观看免费视频网站www | 欧美性猛交99久久久久99按摩 | 人伦片无码中文字 | 特级西西人体4444xxxx | 欧美日韩无线码在线观看 | 国产一区99 | 国产天天骚 | 国产91热爆ts人妖在线 | 欧美性猛交xxxx乱大交蜜桃 | chinatube国语对白 | 91久久国产成人精品 | 精品国产情侣高潮露脸在线 | 丁香午夜 | 国产精品免费av一区二区三区 | 亚洲一区二区视频在线观看 | 主站蜘蛛池模板: 蛛词}| 性久久久久久久久 | 免费人成激情视频在线观看冫 | 欧美成人在线影院 | 亚洲精品偷拍视频 | 天堂网在线观看av | 亚洲超碰在线观看 | 亚洲精品无码不卡在线播放 | 欧美极品少妇做受 | 另类激情综合网 | 精品视频在线看 | 中文字幕av一区二区三区 | 亚洲色图吧 | 宅男午夜成年影视在线观看 | 啪啪无码人妻丰满熟妇 | 青草精品 | 国产1024 | 亚洲精品久久久久久动漫器材一区 | 中文无码第3页不卡av | 亚韩精品中文字幕无码视频 | 日韩视 | 在线精品亚洲第一区焦香 | 亚洲色大成网站www永久在线观看 | 特黄特色大片免费播放器图片 | 国产精品太长太粗太大视频 | 伊人55| 亚洲亚洲精品av在线动态图 | 国产精品三级赵丽颖 | 欧美大片一区 | www.jizz国产 | 久久精品久久电影免费理论片 | 国产99在线 | 中国 | 天天操天天操天天射 | 欧美日韩亚洲国内综合网 | 丁香五月缴情在线 | 精品国产福利久久久 | 1000部精品久久久久久久久 | 中文无码精品一区二区三区 | 日韩av女优在线播放 | 四虎永久在线精品8848a | 伊人春色视频 | 久久久久久久一区二区三区 | 牛人盗摄一区二区三区视频 | 亚洲无线码免费 | av不卡一区二区 | 精品成人免费一区二区在线播放 | 亚洲欧美国产双大乳头 | 18视频在线观看3d | 特级西西444ww大胆视频 | 少妇肥臀大白屁股高清 | 手机成亚洲人成电影网站 | 中文字幕一精品亚洲无线一区 | 偷拍激情视频一区二区三区 | 午夜少妇av | 98久久 | 影音先锋亚洲一区 | 亚洲一二三区视频 | 精品久久久久久亚洲精品 | 婷婷丁香九月 | 国产99爱在线视频免费观看 | 主站蜘蛛池模板: 蛛词}| 日本高清一二三区视频在线 | 狠狠躁日日躁夜夜躁2020 | 欧美老妇大p毛茸茸 | 色天天躁夜夜躁天干天干 | 欧美性战a久久久久久 | 超碰免费在线观看 | 无码色偷偷亚洲国内自拍 | 99热这里只有精品4 国产亚洲第一区 | 无码不卡一区二区三区在线观看 | 欧美视频在线播放 | 狠狠色综合久久婷婷 | 99色网 | 欧美黄色免费在线观看 | 欧美另类videosbestsex日本 | 精品水蜜桃久久久久久久 | 亚洲欧美日本久久综合网站点击 | 夜色www国产精品资源站 | 国产真实乱子伦精品视频 | 欧美xxxx狂喷水欧美喷水 | 久久久久99| 国产视频一区在线播放 | 视频在线观看91 | 国产成人一区二区三区小说 | 国产av亚洲精品久久久久 | 在线看一区二区 | 亚洲中文字幕无码中文字在线 | 亚洲精品久久一区二区三区 | 欧美日韩成人精品 | 天堂中文在线官网 | 中文无码熟妇人妻av在线 | 波多野结衣在线网站 | 成人淫片免费视频95视频 | 亚洲精品一卡二卡三卡四卡2021 | 啪啪av大全导航福利网址 | 国产αv | 亚洲福利视频网 | 国产精品美女 | 欧美xxxx18性欧美 | 午夜亚洲aⅴ无码高潮片苍井空 | 少妇爽到呻吟的视频 | 熟年交尾五十路视频在线播放 | 人妻少妇heyzo无码专区 | 97涩色| 乱人伦人妻精品一区二区 | 人妻无码vs中文字幕久久av爆 | 一区二区免费视频中文乱码 | 亚洲愉拍自拍欧美精品 | 狠狠爱www人成狠狠爱综合网 | 日韩高清在线观看不卡一区二区 | 永久免费看片在线观看 | www.久久爱69.com | 强乱中文字幕 | 91视频网址入口 | 亚洲资源网站 | 一本色道久久综合亚洲精品不卡 | 美女高潮黄又色高清视频免费 | 国产精品自在在线午夜蜜芽tv在线 | 亚洲国产av导航第一福利网 | 亚洲欧美v| 主站蜘蛛池模板: 蛛词}| 激情狠狠 | 免费一级毛毛片 | 亚洲综合伊人久久综合 | 国产精口品美女乱子伦高潮 | 精品成人免费一区二区在线播放 | 国产午夜精品久久久 | 中文字幕资源 | 亚洲综合欧美 | 大黑人交xxxx18视频 | 亚洲精品乱码久久久久久日本 | 国产午夜亚洲精品理论片不卡 | 日韩欧美成人一区二区 | 国产精品9x捆绑调教视频 | 国产av无码专区亚洲版综合 | 99久久久无码国产精品性 | 国产麻豆一区二区三区精品 | 丁香五月亚洲中文字幕 | 精品久久久999 | 国产成人精品综合 | 国产一区二区三区色淫影院 | 国产成人av激情在线播放 | 麻豆果冻国产剧情av在线播放 | 国产在视频精品线观看 | 国产999久久高清免费观看 | 亚洲成老女av人在线视 | 国产在线精品一区在线观看 | 国产精品久久99综合免费观看尤物 | 超碰人人超碰 | 国产欧美日韩一区2区 | 久久无码专区国产精品s | 精品一区二区三区免费播放 | 欧美极品中文字幕 | 极品少妇的粉嫩小泬看片 | 99热成人精品热久久6 | 久草久草 | 日本中文一二区有码在线 | 国产亚洲精品久久yy50 | www.com毛片 | 99这里视频只精品2019 | 国产99自拍 | 奇米超碰 | 午夜精品久久久久久毛片 | 亚洲精品色午夜无码专区日韩 | 成人黄色片视频 | 欧美黄色免费网 | 日本熟妇色一本在线观看 | 免费看的av网站 | 偷拍激情视频一区二区三区 | 天天综合网在线 | 国产女人40精品一区毛片视频 | 久久青草精品欧美日韩精品 | 香蕉精品亚洲二区在线观看 | 久热中文字幕在线精品观 | 欧美又粗又深又猛又爽啪啪九色 | 欧美又粗又大又硬又长又爽视频 | 国内免费久久久久久久久久 | 超碰网站在线观看 | av无码中文字幕不卡一区二区三区 | 国产精品久久久久一区二区 | 主站蜘蛛池模板: 蛛词}| 看美女毛片 | 成人在线网站观看 | 在线免费av网站 | 手机av在线网址 | 偷窥四川少妇野外啪啪 | 日本精品视频网站 | 欧美极品少妇xxxxⅹ猛交 | 精品国产男人的天堂久久 | 黑人30厘米少妇高潮全部进入 | 日本学生三级在线观看 | 国产成人欧美日本在线观看 | 4455四色成人网 | xxxx性×xx老少配视频网站 | 天堂资源成人√ | 成人无码www在线看免费 | 国产在线精品成人一区二区三区 | 日韩视频精品在线 | 少妇做爰α片免费视频网站 | 亚洲高潮毛片无遮挡免费 | 国产天天在线 | 亚洲精品国产黑色丝袜 | 精品国产乱码久久久久久图片 | 亚洲人成国产精品无码果冻 | 日本麻豆一区二区三区视频 | 偷拍大众浴池精品视频在线播放 | 国产成人亚洲精品青草 | www.伊人久久 | 久久久www免费人成精品 | 黄色一级在线观看 | 日本一区二区三区四区在线观看 | 超碰国产在线观看 | 久久久久9999亚洲精品 | 三个男人躁我一个爽视频免费 | 伦理片免费完整片在线观看 | 日韩一区二区在线看 | 亚洲欧美第一成人网站7777 | 亚洲综合成人婷婷小说 | 国产在线精品一区二区不卡麻豆 | 久久综合97丁香色香蕉 | 亚洲小说图区综合在线 | 日本特黄特色特爽大片 | 日本不卡视频一区 | 国产av成人精品播放 | 日韩有码在线播放 | 日韩欧美国产一区二区在线观看 | 美女福利视频在线观看 | 天堂av在线8 | 国产无遮挡又黄又爽在线视频 | 香蕉视频在线精品视频 | 极品少妇被猛得白浆直喷白浆小说 | 精品人妻一区二区三区浪潮在线 | 亚洲中文字幕无码中文字 | 国产成人无码免费看片软件 | 国产精品一区二区三区四区五区 | 男阳茎进女阳道视频大全 | 国产乱淫av一区二区三区 | 亚洲精品日韩一区二区电影 | 亚洲综合av在线在线播放 | 黄色一级免费视频 |