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

wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 127 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
樓主  發(fā)表于: 2007-09-22 12:49
一、最新三菱PLC FX系列PLC編程口通信協(xié)議動(dòng)態(tài)鏈接庫(kù)DLL(以下簡(jiǎn)稱(chēng)DLL),是為滿足工業(yè)通信需要,針對(duì)工業(yè)領(lǐng)域要求上位機(jī)對(duì)PLC實(shí)時(shí)采集與控制的組態(tài)編程而設(shè)計(jì)。本DLL是采用Delphi語(yǔ)言開(kāi)發(fā)的標(biāo)準(zhǔn)串口通訊庫(kù),具有以下特點(diǎn):
1)、實(shí)時(shí)性、可靠性好,可根據(jù)通信數(shù)據(jù)量自行調(diào)整通信時(shí)間;
2)、適用于多PLC聯(lián)網(wǎng)和上位機(jī)通信,滿足多方面的需要;
3)、函數(shù)接口功能全,操作簡(jiǎn)單;
4)、附加實(shí)用轉(zhuǎn)換與讀取函數(shù),易于快速開(kāi)發(fā)(VC等非RAD開(kāi)發(fā)環(huán)境的開(kāi)發(fā));
5)、支持USB、PC擴(kuò)展卡等擴(kuò)展串口號(hào);
6)、支持多種操作系統(tǒng)win9x/win2000/winXP;
7)、可在多種編程環(huán)境下使用,例如VB、VC、Delphi等開(kāi)發(fā)環(huán)境。

二、DLL函數(shù)說(shuō)明

1、打開(kāi)串口
Function ComOpen(nport:longint;User:Pchar):longint;stdcall;
參數(shù):nport: 打開(kāi)串口號(hào),取值為1~8,代表COM1~COM8;
      User:DLL授權(quán)用戶名;
返回值:長(zhǎng)整型,操作成功返回1,否則返回0;打開(kāi)串口不成功即返回0時(shí)的原因:1)、串口不存在或被占用; 2)、DLL試用過(guò)期; 3)、DLL授權(quán)注冊(cè)不正確。

使用舉例:
ComOpen(1,'wjun') , 打開(kāi)COM1口。

2、關(guān)閉串口
Function ComClose(nport:longint):longint;stdcall;
參數(shù):nport: 串口號(hào),取值為1~8,代表COM1~COM8;
返回值:長(zhǎng)整型,操作成功返回1,否則返回0;

使用舉例:
ComClose(1) ,關(guān)閉打開(kāi)的COM1口。

3、PLC存儲(chǔ)器的預(yù)置(D)
Function ComDWrite(nport,address:longint;sendstr:pchar):longint;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8,代表COM1~COM8;
address: 寄存器地址,取值為0~4095(此值需根據(jù)不同的PLC操作選擇合適的地址范圍);
sendstr:  給寄存器寫(xiě)入的值,該值為4個(gè)一組的16進(jìn)制字符串組其取值為0000~FFFF(整數(shù)值為0~65535),當(dāng)要寫(xiě)入多個(gè)寄存器值時(shí)依次排列即可。如給D0與D1寫(xiě)值100和1000,先將100轉(zhuǎn)成16進(jìn)制字符串0064、1000轉(zhuǎn)成16進(jìn)制字符串03E8,則sendstr=006403E8;一次最多寫(xiě)32個(gè)寄存器即字符串長(zhǎng)應(yīng)小于等于128;
                            ---------- ----  ~  ---------
寫(xiě)字符串序列如:            | 0000 | FFFF | 0010 | 0064 |  ~    | 0010 | 0064 |
                            ---------- ----  ~  ---------
返回值:長(zhǎng)整型,操作成功返回1,否則返回0;

使用舉例:
ComDwrite(1,0,‘006403E8’),由串口1預(yù)置值D0=100,D1=1000。

4、PLC存儲(chǔ)器的讀取(C、D、T)
Function ComDRead(nport,address,Count:longint;element:Pchar):Pchar;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8,代表COM1~COM8;
address: 寄存器地址,取值為D區(qū)0~4095、C、T(定時(shí)器/計(jì)數(shù)器當(dāng)前值)區(qū)0~255;
Count: 讀取寄存器個(gè)數(shù),最多讀取32個(gè)寄存器;DLL讀取的越界會(huì)自動(dòng)舍去
element:元件名稱(chēng),支持D、C、T;
返回值:字符串?dāng)?shù)據(jù),字符串?dāng)?shù)據(jù)的終止符為"@";
使用舉例:
ComDRead(1,0,4,'D') ,由COM1讀取D0~D3四個(gè)寄存器的值,如返回值為“0001006403E809F0@”,則表示D0=0001, D1=0064,D2=03E8,D3=09F0;

                            ---------- ----  ---
讀字符串序列如:            | 0001 | 0064 | 03E8 | 009F | | @ |
                            ---------- ----  ---
返回值為16進(jìn)制字符串,可以將返回值如上四位一組再轉(zhuǎn)換成“0~65535”的整數(shù)值。


5、PLC的多線圈強(qiáng)置(C、M、S、T)
Function ComEForce(nport,address:longint;element,sendstr:pchar):longint;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8, 代表COM1~COM8;
address: 位單元地址,定時(shí)器C:0~255、M:0~2047、S:0~999、T:0~255、特M: M8000~M8255;
element:元件名稱(chēng),支持C、M、S、T;
sendstr:  給多線圈寫(xiě)入的值,該值為2個(gè)一組的16進(jìn)制字符串組其取值為00~FF(整數(shù)值為0~255),當(dāng)要寫(xiě)入多個(gè)值時(shí)依次排列即可。例如: 字節(jié)地址C0'(實(shí)際由位地址位C0~C7)、字節(jié)地址C1'(實(shí)際由位地址位C8~C15),如給C0'賦值80、C1'賦值CF,則sendstr=80CF;一次最多寫(xiě)64個(gè)字節(jié),即字符串長(zhǎng)應(yīng)小于等于128;
                          ---------- - ~  ------
寫(xiě)字符串序列如:          | 00 | FF | 10 | 64 |  ~  | 1F | 48 |
                          ---------- - ~  ------

實(shí)際字符串與位地址的數(shù)值應(yīng)如下表:(將上例的字節(jié)C0'、C1'轉(zhuǎn)換為位地址C0~C15由下表對(duì)應(yīng))
            ------------------------------------
位地址:    | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
            ------------------------------------ 
各位賦值:  | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1  | 1  | 0  | 0  | 1  | 1  | 1 | 1 |
            ------------------------------------
16進(jìn)制串:  |      8      |      0      |        C        |        F      |
            ------------------------------------
         
返回值:長(zhǎng)整型,操作成功返回1,否則返回0;

使用舉例:
ComEForce(1,0,‘C’ ,‘80CF’),DLL將按上表給相應(yīng)位強(qiáng)置值,這里地址address賦值0~7都是給C0~C15的強(qiáng)置值,因?qū)嶋H字節(jié)地址=address div 8 (0~7 div 8 都等于0,即都是給C0'、C1'強(qiáng)置值)。

字節(jié)地址如Mx' = address div 8 ,M、S、C、T都按此公式計(jì)算如何給實(shí)際的位地址強(qiáng)置值。

6、PLC的多線圈讀取(C、M、S、T、X、Y)
Function ComERead(nport,address,Count:longint;element:Pchar):Pchar;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8,代表COM1~COM8;
address: 位單元地址,定時(shí)器C:0~255、M:0~2047、S:0~999、T:0~255、X:0~177(8進(jìn)制)、Y:0~177(8進(jìn)制)、特M: M8000~M8255;
Count: 讀取字節(jié)個(gè)數(shù),最多讀取64個(gè)字節(jié);
element:元件名稱(chēng),支持C、M、S、T、X、Y;
位單元的字節(jié)組成按8個(gè)位一組,如56(16進(jìn)制)則表示下表的位構(gòu)造值。
              ----------------
位地址:      | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
              ----------------
各位賦值:    | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
              ----------------
16進(jìn)制串:    |      5      |      6      |
              ----------------
使用舉例:
ComERead(1,0,1,‘M’),如返回56(16進(jìn)制)則M0~M7的值為上表反應(yīng)的結(jié)果。0~255的位地址映射成字節(jié)地址應(yīng)為0~31。
即:實(shí)際地址=address / 8 ,如ComERead(1,11,2,‘C’)相應(yīng)都得是C8~C15與C16~C23組合的兩個(gè)字節(jié)的值,例如返回值為“870A@”
        -----------------------------------------
位地址:| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | @ |
        ----------------------------------------- 
各位賦值:| 1 | 0  | 0  | 0  | 0  | 1  | 1 | 1 | 0  | 0  | 0  | 0  | 1  | 0  | 1  | 0  | @ |
        -----------------------------------------
16進(jìn)制串:|        8        |        7      |        0        |        A        | @ |
        -----------------------------------------

"@"為字符串?dāng)?shù)據(jù)的終止符。

DLL還提供附加函數(shù)CinBin ,可以讀出字節(jié)中相應(yīng)位的值是1還是0。

對(duì)于X、Y區(qū)線圈地址可以按8進(jìn)制地址轉(zhuǎn)換成10進(jìn)制后再參照上表的地址映射關(guān)系。


7、PLC的線圈置位(C、M、S、T)

Function ComESet(nport,address:longint;element:Pchar):longint;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8,代表COM1~COM8;
address: 位單元地址,定時(shí)器C:0~255、M:0~1023、S:0~999、T:0~255、X:0~177、Y:0~177及特M: M8000~M8255;
element:元件名稱(chēng),支持C、M、S、T;
使用舉例:
ComESet(1,0,‘C’),由COM1給C0置位;
ComESet(1,8010,‘M’), 由COM1給M8010置位;


8、PLC的線圈復(fù)位(C、M、S、T)
Function ComEReset (nport,address:longint;element:Pchar):longint;stdcall;
參數(shù):
nport: 串口號(hào),取值為1~8,代表COM1~COM8;
address: 位單元地址,定時(shí)器C:0~255、M:0~1023、S:0~999、T:0~255、X:0~177、Y:0~177及特M: M8000~M8255;
element:元件名稱(chēng),支持C、M、S、T;
使用舉例:
ComEReset(1,0,‘T’),給T0復(fù)位;
ComEReset (1,810,‘S’),給S810復(fù)位;

三、DLL附加函數(shù)說(shuō)明

1、串口打開(kāi)狀態(tài)的讀取
Function ComTrue(nport:longint):longint;stdcall;
參數(shù):
noprt: 串口號(hào),取值為1~8,代表COM1~COM8;
返回值:長(zhǎng)整型,串口打開(kāi)返回1,否則返回0;

2、整數(shù)轉(zhuǎn)換成16進(jìn)制字符串 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CIntToHex(Cint,Digits:Longint):Pchar;stdcall;
參數(shù):
Cint: 待轉(zhuǎn)換整數(shù),取值為(0~65535);
Digits: 轉(zhuǎn)換的字符串位數(shù),指定位數(shù)小于實(shí)際位數(shù)時(shí)按實(shí)際輸出;

使用舉例:
CIntToHex(200,2),則返回字符串“C8@”;
CIntToHex(200,4),則返回字符串“00C8@”;
CIntToHex(4500,4),則返回字符串“1194@”;
CIntToHex(4500,3),則返回字符串“1194@”,因?yàn)椤?94”不足以表示4500這個(gè)數(shù)所以按實(shí)際輸出字符串“1194@”;

"@"為字符串?dāng)?shù)據(jù)的終止符。

3、16進(jìn)制字符串轉(zhuǎn)換成整數(shù) (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CHexToInt(CHex:Pchar):Longint;stdcall;
參數(shù):
CHex: 待轉(zhuǎn)換字符串,取值為(0000~FFFF);
使用舉例:
CHexToInt(‘03E8’),則返回整數(shù)1000;

4、抽取16進(jìn)制字符串中某個(gè)位的值
Function CinBin(CHex:Pchar;Start:longint):longint;stdcall;
參數(shù):
CHex: 待轉(zhuǎn)換字符串,取值為(0~FFFF);
Start: 抽取的位,取值為(0~15);
使用舉例:
CinBin(‘0F’,3),則返回值1;
CinBin(‘0F’,4),則返回值0;
CinBin(‘03E8’,6),則返回值1;
讀取M8~M15組合成的字節(jié)值為“FC”時(shí),要讀取M10的值時(shí),則調(diào)用CinBin(‘FC’,3)返回值1表示M10的值為1。

5、返回字符串Text左邊的Count個(gè)字符  (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CLeftStr(Text:Pchar;Count:longint):Pchar;stdcall;
參數(shù):
Text: 字符串原型;
Count: 指定返回左側(cè)字符串個(gè)數(shù);

使用舉例:
CleftStr('123456', 3) = '123@';

"@"為字符串?dāng)?shù)據(jù)的終止符。

6、返回字符串Text右邊的Count個(gè)字符  (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CRightStr(Text:Pchar;Count:longint):Pchar;stdcall;
參數(shù):
Text: 字符串原型;
Count: 指定返回右側(cè)字符串個(gè)數(shù)
使用舉例:
CRightStr('123456', 3) = '456@';

"@"為字符串?dāng)?shù)據(jù)的終止符。

7、返回字符串Text從Start開(kāi)始的Count個(gè)字符 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CMidStr(Text:Pchar;Start,Count:longint):Pchar;stdcall;
參數(shù):
Text: 字符串原型;
Start: 指定返回字符串的起始位置;
Count: 指定返回字符串個(gè)數(shù);
使用舉例:
CMidStr('123456',2,3) = '234@';

"@"為字符串?dāng)?shù)據(jù)的終止符。

8、字符串Substr開(kāi)始于字符串S的位置 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))
Function CinStr(S,Substr:Pchar):Longint;stdcall;
參數(shù):
S: 字符串原型;
Substr: 查詢的字符串;
返回值:長(zhǎng)整型;

使用舉例:
CinStr('1Tfdg23456','2') = 6

DLL中關(guān)于傳出字符串值的函數(shù)都以"@"為字符串函數(shù)值終止符。

四、Delphi、VB、VC語(yǔ)言環(huán)境的開(kāi)發(fā)使用說(shuō)明

1、Delphi語(yǔ)言環(huán)境開(kāi)發(fā)說(shuō)明

在Delphi環(huán)境下將melsecfx.dll、serialfx.slip(許可文件)復(fù)制到應(yīng)用程序目錄下(即將上述文件與編譯后的可執(zhí)行文件方入同一文件夾內(nèi));

在工程文件的主程序窗體(pas)文件中聲明:

Function ComOpen(nport:longint;User:pchar):longint;stdcall;External'melsecfx.dll';
Function ComClose(nport:longint):longint;stdcall;External'melsecfx.dll';
Function ComDWrite(nport,address:longint;sendstr:pchar):longint;stdcall;External'melsecfx.dll';
Function ComDRead(nport,address,Count:longint;element:Pchar):Pchar;stdcall;External'melsecfx.dll';
Function ComEForce(nport,address:longint;element,sendstr:pchar):longint;stdcall;External'melsecfx.dll';
Function ComERead(nport,address,Count:longint;element:Pchar):Pchar;stdcall;External'melsecfx.dll';
Function ComESet(nport,address:longint;Element:Pchar):longint;stdcall;External'melsecfx.dll';
Function ComEReset(nport,address:longint;element:Pchar):longint;stdcall;External'melsecfx.dll';
Function ComTrue(nport:longint):longint;stdcall; External'melsecfx.dll';
Function CinBin(CHex:Pchar;Start:longint):longint;stdcall; External'melsecfx.dll';

其它附加函數(shù)Delphi有實(shí)用函數(shù),建議用Delphi自帶函數(shù),如需使用聲明參上例;

聲明后可以在程序中使用這些函數(shù),附加函數(shù)置中除ComTrue、CinBin外Delphi系統(tǒng)自帶有類(lèi)似功能函數(shù)。通信時(shí)必須先使用ComOpen函數(shù)打開(kāi)串口,在串口打開(kāi)后可以有效操作相關(guān)函數(shù),為確保通信可在程序運(yùn)行開(kāi)始時(shí)打開(kāi)串口,程序關(guān)閉前關(guān)閉串口。應(yīng)用程序關(guān)閉之前請(qǐng)務(wù)必將關(guān)閉所有串口,如串口未關(guān)閉前關(guān)閉系統(tǒng)將拋出異常。確保應(yīng)用程序在關(guān)閉釋放前關(guān)閉打開(kāi)的串口。解決方法,在form的OnDestroy事件中加入如下語(yǔ)句:
if ComTrue(1)=1 then ComClose(1);
在Delphi中給中給DLL中的函數(shù)傳pchar值問(wèn)題,參考下例:
讀取多線圈M8~M23的值
Procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  elementstr,Recstr:string
  Name:pchar;
  address,Count:word;
begin
  elementstr:=’M’;
  address:=8;  //地址給8~15都行,實(shí)際地址=address div 8
  Count:=2;
  // Recstr:= ComERead(1,address, Count,Pchar(elementstr));
  //以上的用法不建議是使用,推薦用下面的用法。
  try
    Name:=strAlloc(8);
Name:=strPCopy(Name, elementstr);  Recstr:=strpas(ComERead(1,address,Count,
Pchar(elementstr));
  finally;
    StrDispose(Name);
  end;
end; 
建議采用strPCopy()|string型轉(zhuǎn)換到Pchar型,straps()|Pchar型轉(zhuǎn)換到string型,不推薦使用直接轉(zhuǎn)換法。

上述可以詳細(xì)參照DEMO程序。

2、VB語(yǔ)言環(huán)境開(kāi)發(fā)說(shuō)明

在VB環(huán)境下將melsecfx.dll、serialfx.slip(許可文件)復(fù)制到應(yīng)用程序目錄下(即將上述文件與編譯后的可執(zhí)行文件方入同一文件夾內(nèi));

在工程文件中聲明:

Private Declare Function ComOpen Lib "melsecfx.dll" (ByVal nport As Long, ByVal User As String) As Long
Private Declare Function ComClose Lib "melsecfx.dll" (ByVal nport As Long) As Long
Private Declare Function ComDWrite Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal sendstr As String) As Long
Private Declare Function ComEForce Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal element As String, ByVal sendstr As String) As Long
Private Declare Function ComDRead Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal Count As Long, ByVal element As String) As String
Private Declare Function ComERead Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal Count As Long, ByVal element As String) As String
Private Declare Function ComESet Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal element As String) As Long
Private Declare Function ComEReset Lib "melsecfx.dll" (ByVal nport As Long, ByVal address As Long, ByVal element As String) As Long
Private Declare Function ComTrue Lib "melsecfx.dll" (ByVal nport As Long) As Long
Private Declare Function CinBin Lib "melsecfx.dll" (ByVal Chex As String, ByVal Start As Long) As Long

其它附加函數(shù)VB有實(shí)用函數(shù),建議用VB自帶函數(shù),如需使用聲明參上例;
做完上述聲明后,便可以在程序中使用相關(guān)函數(shù)了。本DLL是串口通信庫(kù),通信時(shí)必須先使用ComOpen函數(shù)打開(kāi)串口,在串口打開(kāi)后可以有效操作相關(guān)函數(shù),為保證通信可以在程序運(yùn)行開(kāi)始時(shí)打開(kāi)串口,程序關(guān)閉前關(guān)閉串口。在應(yīng)用程序關(guān)閉之前請(qǐng)務(wù)必將關(guān)閉所有串口,如您的程序串口未關(guān)閉前被關(guān)閉系統(tǒng)將拋出異常。當(dāng)出現(xiàn)這樣的異常請(qǐng)更改您的程序,確保應(yīng)用程序在關(guān)閉釋放前關(guān)閉打開(kāi)的串口。
解決方法,在form的Unload事件中加入如下例:
If ComTrue(1)=1 then
  ComClose(1)
End if
為確保Unload事件有效執(zhí)行程序中應(yīng)使用“End”語(yǔ)句,而盡量使用“Unload”語(yǔ)句釋放所有窗體,因使用“End”語(yǔ)句系統(tǒng)不會(huì)執(zhí)行正常的窗體釋放等事件而直接退出程序,如程序中有form1,form2兩個(gè)窗體,則使用下面語(yǔ)句:
Unload  form1
Unload  form2
VB會(huì)在所有窗體關(guān)閉后釋放所有占用資源。
上述可以詳細(xì)參照DEMO程序。

3、VC語(yǔ)言環(huán)境開(kāi)發(fā)說(shuō)明
在VC環(huán)境下將melsecfx.dll、serialfx.slip(許可文件)復(fù)制到應(yīng)用程序目錄下(即將上述文件與編譯后的可執(zhí)行文件方入同一文件夾內(nèi));

在工程主文件cpp中聲明一個(gè)句柄:
HINSTANCE m_handle;
用來(lái)標(biāo)識(shí)導(dǎo)入的動(dòng)態(tài)鏈接庫(kù)。

1)、導(dǎo)入動(dòng)態(tài)鏈接庫(kù),如例所示:

  m_handle =:: LoadLibrary("melsecfx.dll");

2)、按下例說(shuō)明聲明相關(guān)各個(gè)函數(shù):

typedef long (CALLBACK* pOpen)(long nport, char* User);
typedef long (CALLBACK* pClose)(long nport);
typedef long (CALLBACK* pDWrite)(long nport,long address, char* sendstr);
typedef long (CALLBACK* pEForce)(long nport,long address, char* element, char* sendstr);
typedef char* (CALLBACK* pDRead)(long nport,long address,long Count, char* element);
typedef char* (CALLBACK* pERead)(long nport,long address,long Count,char* element);
typedef long (CALLBACK* pSet)(long nport,long address, char* element);
typedef long (CALLBACK* pReset)(long nport,long address char* element);
typedef long (CALLBACK* pTrue)(long nport);
typedef char* (CALLBACK* pIntHex)(long Cint,long Digits);
typedef long (CALLBACK* pHexInt)( char* CHex);
typedef long (CALLBACK* pBin)( char* Chex, long Start);
typedef char* (CALLBACK* pLeft)( char* Text, long Count);
typedef char* (CALLBACK* pRight)( char* Text, long Count);
typedef char* (CALLBACK* pMid)( char* Text, long  Start, long Count);
typedef long (CALLBACK* pinstr)( char* S, char* Substr);

3)、聲明并建立動(dòng)態(tài)鏈接庫(kù)中的函數(shù)與新函數(shù)名的對(duì)應(yīng)關(guān)系,如下:

pOpen cOpen = (pOpen)GetProcAddress(m_handle,"ComOpen");
pClose cClose = (pClose)GetProcAddress(m_handle,"ComClose");
pDWrite cDWrite = (pDWrite)GetProcAddress(m_handle," ComDWrite");
pDRead cDRead = (pDRead)GetProcAddress(m_handle," ComDRead");
pEForce cEForce = (pEForce)GetProcAddress(m_handle,"ComEForce");
pERead cERead = (pERead)GetProcAddress(m_handle,"ComERead");
pSet cSet = (pSet)GetProcAddress(m_handle," ComESet");
pReset cReset = (pReset)GetProcAddress(m_handle," ComEReset");
pTrue cTrue = (pTrue)GetProcAddress(m_handle," ComTrue");
pIntHex cIntHex = (pIntHex)GetProcAddress(m_handle," CIntToHex");
pHexInt cHexInt = (pHexInt)GetProcAddress(m_handle," CHexToInt");
pBin cBin = (pBin)GetProcAddress(m_handle," CinBin");
pLeft cLeft = (pLeft)GetProcAddress(m_handle," CLeftStr");
pRight cRight = (pRight)GetProcAddress(m_handle," CRightStr");
pMid cMid= (pMid)GetProcAddress(m_handle," CMidStr");
pinstr instr=(pinstr)GetProcAddress(m_handle," CinStr");

注:雙引號(hào)中為動(dòng)態(tài)鏈接庫(kù)中的函數(shù)名。

4)、接下來(lái)就可以自由使用動(dòng)態(tài)鏈接庫(kù)中的函數(shù)了,如:

cOpen(參數(shù)略);
cClose(參數(shù)略);
cDWrite(參數(shù)略);
cDRead(參數(shù)略);
cEForce(參數(shù)略);
cERead(參數(shù)略);
cSet(參數(shù)略);
cReset(參數(shù)略);
cTrue(參數(shù)略);
cIntHex(參數(shù)略);
cHexInt(參數(shù)略);
cBin(參數(shù)略);
cLeft(參數(shù)略);
cRight(參數(shù)略);
cMid(參數(shù)略);
instr(參數(shù)略);

注:函數(shù)中用到了char*型參數(shù),這里介紹下char*與Cstring的相互轉(zhuǎn)換的函數(shù):
(1)char*->CString
char* sz;
CString str;
str.Format("%s",sz);  //可以用此函數(shù)將讀取的值轉(zhuǎn)成字符串
(2) CString -> char*
CString str;
char* sz = str.GetBuffer(0);//可將字符串轉(zhuǎn)成char*給函數(shù)賦值

5)、當(dāng)不再需要使用DLL時(shí)記得關(guān)閉串口及釋放動(dòng)態(tài)鏈接庫(kù),如:

關(guān)閉串口
if cTrue(1)==1 then
{
  cClose(1);
}

6)、釋放DLL

FreeLibrary(m_handle);

注:對(duì)于各位使用VC及其他開(kāi)發(fā)環(huán)境的朋友,我表示歉意因?yàn)槲也惶褂眠@類(lèi)軟件所以就不再寫(xiě)DEMO程序了,VC的參照上述聲明我做過(guò)測(cè)試是可以使用的,其他開(kāi)發(fā)環(huán)境我沒(méi)有測(cè)試不能保證您可以使用。

作者:  wjun7610
QQ:    157610979
Email: wjun7610@yahoo.com.cn
淘寶店:http://shop34821629.taobao.com
本帖最近評(píng)分記錄:
  • 下載積分:+5(taoyu001) 樓主辛苦了!
  • 下載積分:+5(YMMFA)
    wjun7610
    級(jí)別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 127 個(gè)
    工控威望: 249 點(diǎn)
    下載積分: 708 分
    在線時(shí)間: 35(小時(shí))
    注冊(cè)時(shí)間: 2007-09-16
    最后登錄: 2025-05-07
    查看wjun7610的 主題 / 回貼
    1樓  發(fā)表于: 2007-09-22 12:50
    這是我第一次發(fā)貼,希望大家多支持。
    wjun7610
    級(jí)別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 127 個(gè)
    工控威望: 249 點(diǎn)
    下載積分: 708 分
    在線時(shí)間: 35(小時(shí))
    注冊(cè)時(shí)間: 2007-09-16
    最后登錄: 2025-05-07
    查看wjun7610的 主題 / 回貼
    2樓  發(fā)表于: 2007-09-22 12:52
    希望在這里能夠結(jié)識(shí)很多工控界的朋友共同進(jìn)步
    lishlish
    級(jí)別: *
    精華主題: * 篇
    發(fā)帖數(shù)量: * 個(gè)
    工控威望: * 點(diǎn)
    下載積分: * 分
    在線時(shí)間: (小時(shí))
    注冊(cè)時(shí)間: *
    最后登錄: *
    查看lishlish的 主題 / 回貼
    3樓  發(fā)表于: 2008-03-21 12:26
    太好了,這種程序可以在電腦與PLC人機(jī)界面中用
    catywu
    級(jí)別: 家園常客
    精華主題: 2 篇
    發(fā)帖數(shù)量: 641 個(gè)
    工控威望: 853 點(diǎn)
    下載積分: 20002 分
    在線時(shí)間: 574(小時(shí))
    注冊(cè)時(shí)間: 2007-08-19
    最后登錄: 2025-06-02
    查看catywu的 主題 / 回貼
    4樓  發(fā)表于: 2008-03-21 21:38
    不錯(cuò)啊!值得學(xué)習(xí)!感謝分享!
    heyijun
    級(jí)別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 39 個(gè)
    工控威望: 141 點(diǎn)
    下載積分: 626 分
    在線時(shí)間: 36(小時(shí))
    注冊(cè)時(shí)間: 2010-11-18
    最后登錄: 2024-12-24
    查看heyijun的 主題 / 回貼
    5樓  發(fā)表于: 2011-01-27 11:55
    值得學(xué)習(xí)!感謝分享!
    xt5818
    級(jí)別: 家園常客
    精華主題: 0
    發(fā)帖數(shù)量: 390 個(gè)
    工控威望: 556 點(diǎn)
    下載積分: 9727 分
    在線時(shí)間: 277(小時(shí))
    注冊(cè)時(shí)間: 2010-11-06
    最后登錄: 2024-06-10
    查看xt5818的 主題 / 回貼
    6樓  發(fā)表于: 2011-01-27 14:14
    值得學(xué)習(xí)!感謝分享!
    crgtom
    人生三寶:家庭,事業(yè),健康。
    級(jí)別: 網(wǎng)絡(luò)英雄

    精華主題: 0
    發(fā)帖數(shù)量: 1381 個(gè)
    工控威望: 9716 點(diǎn)
    下載積分: 102027 分
    在線時(shí)間: 969(小時(shí))
    注冊(cè)時(shí)間: 2009-09-21
    最后登錄: 2025-06-03
    查看crgtom的 主題 / 回貼
    7樓  發(fā)表于: 2011-05-11 17:59
    感謝分享!學(xué)習(xí)!學(xué)習(xí)!
    技術(shù)是有時(shí)效性的,一旦過(guò)了市場(chǎng)周期,都會(huì)變成垃圾!
    wtgosa
    級(jí)別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 219 個(gè)
    工控威望: 294 點(diǎn)
    下載積分: 6270 分
    在線時(shí)間: 293(小時(shí))
    注冊(cè)時(shí)間: 2010-01-25
    最后登錄: 2025-05-19
    查看wtgosa的 主題 / 回貼
    8樓  發(fā)表于: 2011-05-15 12:21
           ,很想了解,但是智慧有限!!

    主站蜘蛛池模板: 91热这里只有精品_男人扒开女人腿桶_农村人伦一区二区三区的重点内容_日本久久一区二区三区_日韩伦理三级_少妇人妻挤奶水中文视频毛片_久久天天操_国产美女被遭强高潮露开双腿 | 久久免费久久_亚洲va欧美va国产va天堂影院_国产毛片av在线_99久久久无码国产精品不卡_黄色视屏免费在线观看_亚洲大乳大丰满中文字幕_国产精品久久久久久久久鸭_综合久久网站 | 天天操导航_久久国内精品自在自线图片_av夜色_啪啪自拍视频_日韩在线精品中文字幕一区二区_亚洲精品久久一区二区三区_CHINASEX喷水VIDEOS中国少妇_久草视频网址 | 国产精品无码免费专区午夜_日韩三级不卡_女性裸体啪啪网站_91高清免费观看_久久中文骚妇内射_激情综合久久_麻豆精品一区二区综合av_精品人妻无码一区二区三区蜜桃 | 三级网站免费观看_欧美乱妇高清无乱码免费_一天av在线高清免费观看_国产亚洲一区字幕_高清视频一区二区三区_成人福利片在线_久久这里只精品_久久精品国产99精品国产亚洲性色 | 亚洲人成在线免费观看_男女扒开双腿猛进入免费看污_国产公妇仑乱在线观看_亚洲va欧美va国产综合先锋_国产精品一区二区av片_久久国产精品欧美_久久午夜国产精品www护士让_玩偶姐姐免费 | 日韩二区在线播放_99久久免费精品高清特色大片_久久欧美精品_麻豆一区二区在线_欧美综合久久_久久综合亚洲色1080P_日韩字幕在线_国产a级一级 18禁男女无遮挡啪啪网站_黄色a级免费观看_奇米成人av国产一区二区三区_插插综合视频_国产成人麻豆亚洲综合无码精品_国产免费一区二区三区四在线播放_免费播放黄色_午夜在线视频播放 | 麻花豆剧国产mv免费版特色_亚洲精品影院在线观看_欧美性生活一级_亚洲天堂av线_黄色成人网战_a级免费观看_92午夜免费福利757_国产AV国片精品无套内谢蜜臀 | 久久精品国产99久久无毒不卡_欧美色欧美亚洲另类七区_国产精品无码天堂av_欧美性色欧美性a片_亚洲日色_日韩A人毛片精品无人区乱码_久久免费毛片大全_国产综合一区二区三区视频一区 国产免费黄色片_久久午夜免费视频_麻豆影视在线免费观看_成人三级做爰av_久久精品中文闷骚内射_美女视频黄的免费_人妻无码一区二区三区_亚洲特黄毛片 | 2021亚洲卡一卡二新区入口_狠狠噜狠狠狠狠丁香五月_护士被两个病人伦奷日出白浆_国产女人本色高清在线观看_嫩草懂你_国内精品99_久久久国产精品免费观看_免费看成年人视频 | 俺也去俺来也www色官网_国产精品久久久久激情影院_小荡货好紧好爽奶头大视频_亚洲免费精品一区_欧美群妇大交乱视_国产一区视频播放_一区二区三区四区欧美日韩_亚洲欧美日韩系列中文字幕 | 国产一区精品_二区精品_亚洲国产精品久久青草无码_亚洲一视频_91在现视频_九九色网_国产精品久久久久久久久久影院的_铠甲勇士免费观看 | 日韩免费无码专区精品观看_久久久久久久久久久久久久免费看_18av千部免费影片与您_日本天堂在线视频_空姐毛片_香蕉私人影院_黑人巨茎大战白人美女_国产成人av免费观看 | 国产肉体ⅹxxx137大胆_吃奶呻吟打开双腿做受是免费视频_久久精品国产99国产精品严洲_国产成人喷潮在线观看_欧美毛片网站_www.亚洲欧美_国产精品久久欧美久久一区_大地资源网在线观看免费官网 | 亚洲Aⅴ无码专区在线观看春色_免费成人_国内三级在线_综合久久久久久久_妞干网福利视频_日韩高清影视_日本超乳排名100位_成年黄色片 | 欧美日韩国产综合在线_日本黄色高清_女人被男人躁得好爽免费视频_AV无码久久久久不卡免费网站_亚洲欧洲免费无码_在线播放免费视频播放_日韩国产精品一区二区三区_久久久久免费毛A片免费一瓶梅 | 一级黄色aaa_国产免费午夜a无码v视频_精品免费在线观看_中文在线无码高潮潮喷_97人人在线_国产成人亚洲合集青青草原精品_欧美成人性色_久久99国产视频 | 日本三级带日本三级带66_综合av在线播放_深夜在线网站_一级片国语_福利姬液液酱喷水_美女人人操_银魂thefinal_日本色清 | 久久婷婷五月国产色综合_免费的日本网站_a级a一片_国产一级片免费观看_亚洲免费av在线播放_yourporn精品视频入口_国产精品一区二区三区网站_欧美性bbbbbxxxxxhd | 九九热黄色片_成人涩涩日本国产一区_亚洲美免无码中文字幕_天天看天天爽_爱色涩a资源_亚洲成H人AV无码动漫无遮挡_亚洲二区精品_成人免费无遮挡在线播放 | 亚洲精品视频一区二区三区_国产∨亚洲V天堂无码久久久_亚洲欧美精品在线_91精品国产乱码久久久久_91性爰视频_一级毛片二级毛片三级毛片_亚洲AV第一成肉网肉片AV_国产免费不卡视频 | 思思99热久久精品在线6_久久久网页_精品国产91久久久久久久_精品国产一区二区三区不卡在线_精品亚洲永久免费精品91香蕉国产线_日韩三区免费_日本免费在线看片_91蜜桃婷婷狠狠久久综合9色 | 色综合伊人色综合网站_国产久草在线观看_国产一级α片_久久久视频精品_日本xxxx娇小_亚洲精品v日韩精品_特级欧美牲交a欧美在线_特黄特色的大片观看免费视频 | 精品国产乱码一区_亚洲AV中文无码乱人伦在线视色_天堂爱爱_久操热久操_国产农村妇女野外牲交视频_亚洲一区午夜_精品综合_国产资源免费在线观看 | 日韩美a一级毛片国产_91视频官网_JAPAN少妇洗澡VIDEOS_黄色一级视频在线观看_天天干天天操天天搞_亚洲成a人蜜臀av在线播放_777奇米888色狠狠俺也去_99久久精品毛片免费播放高清 | 137日本免费肉体摄影_伊人365_日韩欧美一区二区在线_无码中文字幕VA精品影院_亚洲AV福利无码无一区二区_深夜影院在线观看_被黑人猛男连续高潮视频_aa国产精品 | japan21xxxxhd日本妞_国产精品婷婷久久爽一下_日韩亚洲国产免费_97超碰青青草_超碰夜夜操_国产精品a久久久久久_少妇蹲下买菜露出毛_一一级毛片 | 亚洲一区二区三区_成人天堂视频在线观看软件_久久婷婷婷_天天综合色天天_欧美一级片毛片免费观看视频_丰满美女一级毛片_人人干人人舔_九九热国产 | xxxx18hd护士hd护士_国产精品露脸国语对白99_国产免费av片在线观看_乱妇乱女熟妇熟女网站_国产精品自拍亚洲_aaa亚洲精品_精品国产乱码一区二区三_色拍拍视频 | 久久网站热最新地址4_www色.com_饥渴少妇浪潮AV麻豆传煤_欧美色五月_伊人成伊人成综合网222_CHINESE玩弄老年熟女_成人午夜视频在线_日本婷婷免费久久毛片 | 手机看片一级片_人人妻人人爽人人澡人人_亚洲成AV人片在一线观看_在线精品自偷自拍无码_中文字幕一区二区三区在线播放_日本中文字幕视频一区_国产不卡精品_99精品久久久久久久另类 | www.成人_亚洲人成网77777亚洲色_色播国产_国产免费一区二区三区视频天天爽_8av国产精品爽爽ⅴa在线观看_亚洲无毛av_成人AV毛片无码免费网站_国产V一区二区三区在线 | GV在线网站_中年熟女被啪高潮视频_国产在线观看你懂的_国产成人亚洲精品无码不卡_一级黄色大毛片_伊人情成综合网2019_国产主播一区二区_日本大片免a费观看视频的特点 | 18禁裸乳无遮挡免费观看_欧美网站一区二区三区_国产精品国产三级国产专业不_成人午夜在线免费观看_国产对白叫床清晰在线播放_毛片网站在线免费观看_黄色在线视频网站_综合九九 | 137日本免费肉体摄影_伊人365_日韩欧美一区二区在线_无码中文字幕VA精品影院_亚洲AV福利无码无一区二区_深夜影院在线观看_被黑人猛男连续高潮视频_aa国产精品 | 亚洲天堂久久久久_野花社区wwW高清视频_一区二区三区四区在线观看国产日韩_久久破处_国产精品成人嫩草影院_国产老片播放_热久久美女精品天天吊色_凹凸精品视频分类视频 | 人与动人物XXXX毛片老司机_heyzo无码中文字幕在线_午夜dj影院在线_中国av免费观看_特黄视频_九九九久久久精品_亚洲不卡在线观看_特级淫片aaaaaaa级 | 俄罗斯美女肛交内射WWWC〇M_国产成人亚洲综合网站_国产成人无码AV在线播放DVD_无码视频在线观看_天天操夜夜草_亚洲综合一区自偷自拍_国产在线观看成人_在线免费av网址 | 人牲a级牲交_视频在线亚洲_亚洲精品无码午夜福利理论片_成年男人裸J照无遮挡无码_黄动漫视频_福利精品在线_日韩欧美中文字幕国产_最新亚洲精品国偷自产在线 | 黑人巨茎精品欧美一区二区_小情侣高清国产在线播放_亚洲区欧美区综合区自拍区_视频一区中文字幕_超碰caoporn久久_亚洲AV成人无码网站在线_国产精品丝袜高跟鞋_九一精品在线观看 | 九色亚洲_国产色a_日本高清免费在线_77成人影院_中文字幕日本人妻久久久免费_绯色av蜜臀av_色999日韩_中国丰满少妇熟乱xxxx |