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

wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
樓主  發表于: 2011-04-05 15:29
圖片:
Omron_HostLink.dll V3.2 HostLink通信協議串口通訊動態鏈接庫DLL(以下簡稱DLL),是為滿足工業通信需要,

針對工業領域要求上位機對歐姆龍系列PLC通訊實時采集與控制的組態編程而設計。

本DLL是采用Delphi語言開發的標準串口通訊庫,具有以下特點:

1)、遵循歐姆龍HostLink通信協議;

2)、支持多串口并發操作,支持多線程串口通訊,將串口通訊對主程序的影響降至最低;

3)、實時性、可靠性好,通用性強;

4)、適用于多PLC(下位機)聯網和上位機通信,滿足多方面的需要;

5)、函數接口功能全,操作簡單,支持歐姆龍PLC的絕大部分地址的讀寫功能函數;

6)、支持USB、PC擴展卡等擴展串口號;

7)、支持多種操作系統win9x/win2000/winXP(標準Win32 DLL);

8)、易于快速開發(VC等非RAD開發環境的開發);

9)、更新原有函數調用方式采用數組調用數據發生與接收,初學者快速入門;

10)、可在多種編程環境下使用,例如VB、VC、Delphi、PB、Labview、易語言等開發環境;

11)、擴展了函數功能讀取下位機中的雙字、單精度浮點等類型數據,更加符合工業自動化領域的工控軟件的開發。

軟件版本更新及相關說明:

Omron_HostLink.dll V3.2 HostLink通信協議串口通訊鏈接庫,實現了對歐姆 龍全系列PLC的HostLink協議的支持,

(刪減了一些特權指令)wangjun于2010年在原有omron.dll V2.0版基礎上的更新版,重寫了函數結構,采用數據接收

和發送緩沖區(數組)方式傳遞,讀出和寫入單元數據使用更方便。對于16位整數和32位整數讀取寫入均按有符號整數

處理,小數的返回按單精度浮點型(2進制浮點)處理讀取方式。提供擴展功能函數,方便用戶實現混合數據讀取。

能夠同時滿足32個串口并發情況下的正常使用。

Omron_HostLink.dll V3.2 分為完美版和單機版兩個版本,本DLL于2010年最新規整優化了部分源碼,

通過DLL發送緩存區與接收緩存區數據傳遞的功能擴展,使多語言環境的使用更加便利。

全新的串口通信DLL控件,完美的VB、VC、delphi例程及工件手冊是,廣大立志利用各類高級語言進行上位機軟件開發的首先工具。

淘寶店:http://shop34821629.taobao.com

電 話:13912935690 025-84359545

騰訊QQ:157610979

郵 箱:157610979@QQ.com

wjun7610@yahoo.com.cn

chinawanglong@163.com
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
1樓  發表于: 2011-04-05 15:32
在VC中使用DLL一般都是采用動態聲明的方式,函數說明中給出的是Delphi的函數原型,

在VC中聲明時只要注意一下類型的對應即可,Delphi中的longint類型對應VC中的int類型

Delphi中的Pchar對應VC中的char* ,下面給出主要函數的聲明:

在使用的文件的cpp中聲明一個句柄:

HINSTANCE hinstDLL;

用來標識導入的動態鏈接庫。

1)、按下例說明聲明相關各個函數:(在cpp文件的頭處聲明)

typedef int (_stdcall *pOpen)(int nport, int BaudRate, int DataBits, char* Parity, int StopBits, char* User);
typedef int (_stdcall *pClose)(int nport);
typedef int (_stdcall *pSetDelay)(int nport);
typedef int (_stdcall *pComTrue)(int nport);
typedef int (_stdcall *pComWork)(int nport);

typedef int (_stdcall *pMS)(int nport, int node);
typedef int (_stdcall *pSC)(int nport, int node, int State);
typedef int (_stdcall *pMM)(int nport, int node);
typedef int (_stdcall *pTS)(int nport, int node);
typedef int (_stdcall *pReadInt)(int nport, int node, int address, int Count, char* Order, int* RxdBuffer);
typedef int (_stdcall *pReadTc)(int nport, int node, int address, int Count, int* RxdBuffer);
typedef int (_stdcall *pWriteInt)(int nport, int node, int address, int Count, char* Order, int* TxdBuffer);

typedef int (_stdcall *pSetF)(int nport, int node, int address, int Bit, char* Order);
typedef int (_stdcall *pReSetF)(int nport, int node, int address, int Bit, char* Order);
typedef int (_stdcall *pCancelF)(int nport, int node, int address, int Bit, char* Order);
typedef int (_stdcall *pCancelAllF)(int nport, int node);

typedef int (_stdcall *pSet)(int nport, int node, int address, int Bit, char* Order);
typedef int (_stdcall *pReSet)(int nport, int node, int address, int Bit, char* Order);
typedef int (_stdcall *pReadBit)(int nport, int node, int address, int Bit, int Count, char* Order, int* RxdBuffer);
typedef int (_stdcall *pReadDInt)(int nport, int node, int address, int Count,int* RxdBuffer);
typedef int (_stdcall *pReadFloat)(int nport, int node, int address, int Count, float* RxdBuffer);
typedef int (_stdcall *pWriteDInt)(int nport, int node, int address, int Count, int* TxdBuffer);
typedef int (_stdcall *pWriteFloat)(int nport, int node, int address, int Count, float* TxdBuffer);

typedef int (_stdcall *pBitBin)(int value, int Bitaddress);
typedef int (_stdcall *p32I_16h)(int value);
typedef int (_stdcall *p32I_16l)(int value);
typedef int (_stdcall *p16I_32I)(int valueH, int valueL);
typedef int (_stdcall *p32f_16h)(float value);
typedef int (_stdcall *p32f_16l)(float value);
typedef float (_stdcall *p16I_32f)(int valueH, int valueL);

2)、建立動態鏈接庫的新函數名:(在cpp文件的頭處聲明)

pOpen mOpen;
pClose mClose;
pSetDelay mSetDelay;
pComTrue mComTrue;
pComWork mComWork;

pMS mMS;
pSC mSC;
pMM mMM;
pTS mTS;
pReadInt mReadInt;
pReadTc mReadTc;
pWriteInt mWriteInt;

pSetF mSetF;
pReSetF mReSetF;
pCancelF mCancelF;
pCancelAllF mCancelAllF;

pSet mSet;
pReSet mReSet;
pReadBit mReadBit;
pReadDInt mReadDInt;
pReadFloat mReadFloat;
pWriteDInt mWriteDInt;
pWriteFloat mWriteFloat;

pBitBin mBitBin;
p32I_16h m32I_16h;
p32I_16l m32I_16l;
p16I_32I m16I_32I;
p32f_16h m32f_16h;
p32f_16l m32f_16l;
p16I_32f m16I_32f;

3)、導入動態鏈接庫,如例所示:(在cpp文件的OnInitDialog過程建立):

hinstDLL = LoadLibrary("Omron_HostLink.dll");

4)、判斷dll文件是否存在并聲明并建立動態鏈接庫中的函數與新函數名的對應關系,

如下:(在cpp文件的OnInitDialog過程建立):

if (hinstDLL)
{
mOpen = (pOpen)GetProcAddress (hinstDLL,"OmronComOpen");
mClose = (pClose)GetProcAddress (hinstDLL,"OmronComClose");
mSetDelay = (pSetDelay)GetProcAddress (hinstDLL,"OmronSetDelay");
mComTrue = (pComTrue)GetProcAddress (hinstDLL,"OmronComTrue");
mComWork = (pComWork)GetProcAddress (hinstDLL,"OmronComWork");

mMS = (pMS)GetProcAddress (hinstDLL,"OmronMS");
mSC = (pSC)GetProcAddress (hinstDLL,"OmronSC");
mMM = (pMM)GetProcAddress (hinstDLL,"OmronMM");
mTS= (pTS)GetProcAddress (hinstDLL,"OmronTS");
mReadInt = (pReadInt)GetProcAddress (hinstDLL,"OmronReadInt");
mReadTc = (pReadTc)GetProcAddress (hinstDLL,"OmronReadTc");
mWriteInt = (pWriteInt)GetProcAddress (hinstDLL,"OmronWriteInt");

mSetF = (pSetF)GetProcAddress (hinstDLL,"OmronSetF");
mReSetF = (pReSetF)GetProcAddress (hinstDLL,"OmronReSetF");
mCancelF = (pCancelF)GetProcAddress (hinstDLL,"OmronCancelF");
mCancelAllF = (pCancelAllF)GetProcAddress (hinstDLL,"OmronCancelAllF");

mSet = (pSet)GetProcAddress (hinstDLL,"OmronSet");
mReSet = (pReSet)GetProcAddress (hinstDLL,"OmronReSet");
mReadBit = (pReadBit)GetProcAddress (hinstDLL,"OmronReadBit");
mReadDInt = (pReadDInt)GetProcAddress (hinstDLL,"OmronReadDInt");
mReadFloat = (pReadFloat)GetProcAddress (hinstDLL,"OmronReadFloat");
mWriteDInt = (pWriteDInt)GetProcAddress (hinstDLL,"OmronWriteDInt");
mWriteFloat = (pWriteFloat)GetProcAddress (hinstDLL,"OmronWriteFloat");

mBitBin = (pBitBin)GetProcAddress (hinstDLL,"DecBitBin");
m32I_16h = (p32I_16h)GetProcAddress (hinstDLL,"Int32ToInt_16h");
m32I_16l = (p32I_16l)GetProcAddress (hinstDLL,"Int32ToInt_16l");
m16I_32I= (p16I_32I)GetProcAddress (hinstDLL,"Int16ToInt32");
m32f_16h = (p32f_16h)GetProcAddress (hinstDLL,"Float32ToInt_16h");
m32f_16l = (p32f_16l)GetProcAddress (hinstDLL,"Float32ToInt_16l");
m16I_32f= (p16I_32f)GetProcAddress (hinstDLL,"Int16ToFloat32");

AfxMessageBox("Omron_HostLink.dll已成功載入!");
}
else
{
AfxMessageBox("沒找到Omron_HostLink.dll!");
SendMessage(WM_CLOSE);
}

注:雙引號中為動態鏈接庫中的原有函數名。


函數中用到了char*型參數,這里介紹下char*與Cstring的相互轉換的函數:

(1)char*->CString

char* sz;
CString str;
str.Format("%s",sz); //可以用此函數將讀取的值轉成字符串

(2) CString -> char*

CString str;
char* sz = str.GetBuffer(0);//可將字符串轉成char*給函數賦值


5)、當不再需要使用DLL時記得關閉串口及釋放動態鏈接庫,(在OnDestroy事件中釋放)

if(hinstDLL)
{
int k = mComTrue(mnport);
if (k==1)
{
mClose(mnport);
}
FreeLibrary(hinstDLL);
}
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
2樓  發表于: 2011-04-05 15:35
上面的DLL使用要點也適用于其他各種windows標準DLL的VC調用。
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
3樓  發表于: 2011-05-24 20:29
呵呵,謝謝你的指教,不錯Fins協議是歐姆龍新版的協議對于新版的支持更好,而且支持串口、以太網等,特別是他支持CP1H、CP1L、CP1E等新出型號的W區的讀寫。數據的讀取數量也更大,本人正在仿現在的hostlink串口動態庫開發相關串口庫,以太網的等我購買了歐姆龍以太網硬件測試成功再吧。
我的目的是提高一些工控人員進行開發上位機軟件的速度,提供完整的函數接口,比開發人員自行使用協議開發要快速,特別是對于新手來說完善的使用例程更加方便了他們的使用。多語言的支持比目前很多只支持VB或VC的一些網絡流行源代碼來說適用性更好,無論使用VC、VB、delphi、CB、PB、易語言、Labview等等都可以得到完美的解決方案。不使用其他控件,完全可以制作綠色版上位機軟件,至于收費嘛,我用了時間做這個軟件自然希望得到認可,愿意不愿意用全憑各位自己,我僅提供一種便捷的方法而已。

主站蜘蛛池模板: 国内精品伊人久久久_国产女主播喷水视频在线观看_亚洲AV无码一区二A片变脸_一二三精品_久久99亚洲AV无码四区_日本小视频网址_精品成人久久久_在线观看久草 | 明星angelababy造梦视频_欧美影音_91婷婷综合一区二区三区久久_亚洲AV日韩AV高潮潮喷无码_俄罗斯VIDEODESXO极品_影视一区_国产免费又色又爽又黄软件_狠狠躁天天躁无码中文字幕图 | 国语对白爽死我了_成人免费观看网址_欧美一级片_色aⅴ性欧美_人妻少妇邻居少妇好多水在线_粉嫩小泬BBBB免费看_日韩中文字幕专区_极品粉嫩饱满一线天在线 | www.成人_亚洲人成网77777亚洲色_色播国产_国产免费一区二区三区视频天天爽_8av国产精品爽爽ⅴa在线观看_亚洲无毛av_成人AV毛片无码免费网站_国产V一区二区三区在线 | 国产免费永久黄色国产_国产女人18毛片水真多_91.成人天堂一区_日本在线看片_欧美男同志网站_国产69精品久久久久9999_成人啪精品视频网站午夜_北条麻妃黄网 | 亚洲欧美日韩中文字幕二_日产精品久久久久久久_国产一区二区三区高清_国产一级a不收费_亚洲AV无码第一区二区三区_懂色av粉嫩av蜜臀av_国产午夜理论不卡在线观看_天天射色综合 | 四虎免费观看_日韩在线91_国产观看99_91婷婷射_亚洲精选中文字幕_色yeye高清在线视频_亚洲日韩成人无码不卡_一区二区三区日韩视频 | 国产精品美脚玉足脚交欧美_一级片久久久_午夜中文_亚洲黄片一级在线广播_男人天堂成人在线_性生交大片免费看_亚洲第一女人av_成人毛片18女人毛片免费 | 班花在教室伦流澡到高潮视频_国产精选91热在线观看_黑人一级大片_蜜臀传媒_红杏出墙记_最近免费观看高清韩国日本大全_亚洲日韩精品无码专区网站_人妻丝袜av先锋影音先 | 欧乱色国产精品兔费视频_看黄网站在线观看_日日干夜夜操s8_一区二区三区偷拍_九九久久自然熟的香蕉图片_久久精品亚洲精品无码白云TV_亚洲成aⅴ人片久青草影院按摩_久久机这里只有精品 | 亚洲精品hd_亚洲天堂伊人网_免费观看一区二区三区毛片软件_成年人黄色片_中国特黄视频_五月久久久综合一区二区人妻_日韩综合_日本超碰在线观看 | 中文人字幕第三页_无码纯肉视频在线观看_99re国产在线播放_日本欧美高清全视频_日韩七区_亚洲第一最快AV网站_中日韩欧美风情视频_欧美成人一区二 | 无毛一级片_9I精品福利一区二区三区蜜桃_精品免费观看_99热这里只有精品地址_亚洲国产精品一区二区成人_久久久精品一品道一区_国产的精品一区二区在线观看_国产亚洲精品久久yy5099 | 亚洲日韩国产成网在线观看_69久久久_伊人久久精品无码麻豆一区_亚洲欧美日韩在线观看a三区_日本网站在线_av在线免费观看国产_最近免费中文字幕大全高清MV_性欧美长视频免费观看不卡 | 91九色国产_九九热这里只有精品8_成人在线啊v_国产高清乱伦精品_精品在线视频一区_日韩视频网_亚洲精品无码一区二区_中文字幕人妻熟女在线 | 久久精品视频69_国产精品91在线播放_亚洲综合无码一区二区_中文日韩一区二区_日韩一卡二卡三卡四卡免费观在线_国产a级免费观看_国内精品免费视频自在线拍_久久ク成人精品中文字幕 | 强奷乱码中文字幕_国产999久久久_成人精品啪啪欧美成_好男人在线社区www_日本粉色视频在线观看_国产精品免费视频色拍拍_日韩av在线免费观看_好妞色妞国产在线视频 | 欧美午夜伦理_曰本人做爰大片免费观看一老师_一级黄免费看_日本一二区不卡_九色视频网站入口_日韩毛毛片_在线观看欧美一区二区三区_日韩亚洲不卡线 | 尤物视频在线观看_国产一区欧美_日韩三级av高清片_亚洲18页_久久一区二_精品这里只有精品_亚洲国产精品视频一区二区三区_人妻少妇精品一区二区三区 | 亚洲一区二区三区_成人天堂视频在线观看软件_久久婷婷婷_天天综合色天天_欧美一级片毛片免费观看视频_丰满美女一级毛片_人人干人人舔_九九热国产 | 啪啪免费网站_婷婷色婷婷开心五月_亚洲人久久久_午夜香蕉成视频人网站_亚洲一线产区二线产区区别在_国产成人综合亚洲看片_成人性色生活片免费看_亚洲国产欧美人成 | 狠狠色噜噜狠狠狠狠奇米777_嫩草影院啪啪_综合激情亚洲_首页国产精品_国产成人在线播放_欧美激情无码成人A片_成人免费av在线_欧美一区第一页 | 中文一区一区三区免费在线观看_日本伊人色综合网_最近更新中文字幕在线2018二_黄色片免费在线_色婷婷香蕉在线一区二区_国产女性无套免费网站_边啃奶头边躁高h裴钰莫捷_国产一级淫片s片sss毛片s级 | 狠狠色噜噜狠狠狠狠奇米777_嫩草影院啪啪_综合激情亚洲_首页国产精品_国产成人在线播放_欧美激情无码成人A片_成人免费av在线_欧美一区第一页 | 亚洲永久精品一区_亚洲精品永久免费_一本大道伊人久久综合_国产精品99久久99久久久动漫_亚洲七久久之综合七久久_超碰网站在线观看_日日日视频_成人做受黄大片 | 手机成人影视_国产精品伦视频看免费三_扒开粉嫩的小缝喷白浆h_亚洲Ⅴa制服丝袜一区二区三区_久草青青在线_久久久小视频_免费A级毛片18禁网站免费_亚洲精品成a人在线观看网站 | 国产麻豆精品a在线观看_91成人天堂久久成人_国产精品久久久久久52avav_成人av激情人伦小说_亚洲黄视频在线观看_国产成人亚洲综合网站小说_精品国产乱来一区二区三区_亚洲日韩中文字幕a∨ | 91热这里只有精品_男人扒开女人腿桶_农村人伦一区二区三区的重点内容_日本久久一区二区三区_日韩伦理三级_少妇人妻挤奶水中文视频毛片_久久天天操_国产美女被遭强高潮露开双腿 | 又色又爽又黄的视频网站_中国午夜伦理片_一区二区三区四区中文字幕_www.youjizz.com久久_狼干综合网_日韩在线视频网站_剑来高清在线观看_99青草 | 亚洲AV午夜福利精品一区二区_亚洲精品一区二区国产精华液_国产91在_亚洲精品在线观看一区二区_99久久99热这里只有精品_91久久久久久久久久久久久_哪里可以看免费的av_日韩有码第一页 | 特黄做受又硬又粗又大视频小说_国产无线卡一卡二_欧美精品三区_欧美午夜精品一区_中文字幕在线一区二区高清_欧美日韩中文在线视频_牛牛碰在线观看_国产婷婷vvvv激情久 | 中国久久久_动漫AV网站免费观看_av大西瓜_久草久视频_国产精品男同志movies_精品国产免费一区二区三区五区_性猛交xxxx乱大交孕妇免费看_wwwxxx国产 | 三级国产三级在线_欧美激情精品久久久久久久久久_国产精品亚洲天堂免下吴_亚洲国产成人熟透妇女_麻豆系列_久草五月_欧美一区二区三区在线_国模小黎大尺度精品(02)[82p] | 九色亚洲_国产色a_日本高清免费在线_77成人影院_中文字幕日本人妻久久久免费_绯色av蜜臀av_色999日韩_中国丰满少妇熟乱xxxx | 日日撸夜夜撸_国产福利一区二区免费视频_在线播放真实国产乱子伦_884aa四虎影成人精品_91手机免费视频_亚洲另类伦春色综合图片_日韩欧美一区二区东京热_久久香蕉国产线看观看99 | 误杀2在线观看免费完整国语高清_日日日对白普通话_久久精品国产99久久72部_91免费视频入口_在线免费观看精品_亚洲精品456在线播放_内射极品少妇xxxxxhd_午夜高清影院 | 日本91网站_久久人人爽人人爽人人片AV东京热_农村野外理伦三级_嫩草官网视频入口_一区二区日韩欧美_a级片一级片_国产亚洲v_久久精品一区二区三区国产主播 | 日本男女啪啪_欧美国产日韩久久_亚洲在线视频观看_亚洲AV乱码专区国产乱码_国产一级不卡毛片_怡红院av_国产乱子伦精品免费无码专区_亚洲AV无码国产一区二区三区 | 小妹色播_93看片淫黄大片一级_富婆偷人对白又粗又大视频_99热热_91精品国产一区二区三区免费_国产优质老熟_天才女友第四季在线播放_亚洲国产91视频 | 四虎免费观看_日韩在线91_国产观看99_91婷婷射_亚洲精选中文字幕_色yeye高清在线视频_亚洲日韩成人无码不卡_一区二区三区日韩视频 | 成人无码H动漫网站免费_中文在线最新版天堂8_亚洲视频在线观看中文字幕_蜜芽亚洲AV尤物183不卡资源_国产精品成人AAAA网站女吊丝_日韩欧美日韩在线_亚洲成人自拍_色网在线观看 |