成人精品一区二区久久久 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 亚洲免费美女视频

wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 110 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
樓主  發(fā)表于: 2007-09-22 12:49
一、最新三菱PLC FX系列PLC編程口通信協(xié)議動(dòng)態(tài)鏈接庫(kù)DLL(以下簡(jiǎn)稱(chēng)DLL),是為滿(mǎn)足工業(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ī)通信,滿(mǎn)足多方面的需要;
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)用戶(hù)名;
返回值:長(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: 查詢(xún)的字符串;
返回值:長(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)
    xt5818
    級(jí)別: 家園?
    精華主題: 0
    發(fā)帖數(shù)量: 378 個(gè)
    工控威望: 556 點(diǎn)
    下載積分: 9727 分
    在線時(shí)間: 277(小時(shí))
    注冊(cè)時(shí)間: 2010-11-06
    最后登錄: 2024-06-10
    查看xt5818的 主題 / 回貼
    1樓  發(fā)表于: 2011-01-27 14:14
    值得學(xué)習(xí)!感謝分享!

    主站蜘蛛池模板: 日日夜夜拍 | 国产精彩乱子真实视频 | 影音先锋新男人av资源站 | 欧美国产伦久久久久久久 | 免费在线观看a视频 | 国产九九 | 午夜福利国产成人a∨在线观看 | 91网站最新地址 | 亚洲中文字幕无码中文字在线 | 精品人妻无码区二区三区 | 性一交一无一伦一精一品 | 99在线精品国自产拍 | 国产精品video爽爽爽爽 | 19禁国产精品福利视频 | 无码ol丝袜高跟秘书在线观看 | 综合久草 | www国产黄色 | 久久久6 | 隣の若妻さん波多野结衣 | 狠狠躁夜夜人人爽天96 | 成人欧美一区二区三区黑人孕妇 | 欧美乱码伦视频免费 | 欧美日韩日本国产 | 曰本女人牲交全视频免费播放 | 国产稀缺真实呦乱在线 | 体验区试看120秒啪啪免费 | 男女后进式猛烈xx00动态图片 | 国产精品日本一区二区在线播放 | 4hu最新| 少妇高潮惨叫久久久久久电影 | 日本一级理论片在线大全 | 成人免费播放视频777777 | 欧美精品videos另类 | 中文字幕人妻伦伦精品 | 国产成人综合久久精品免费 | 成人无码男男gv在线观看网站 | 国产成人久久久精品免费澳门 | 一区二区三区在线观看视频 | 中文字幕在线观看一区 | 国产欧美亚洲精品a | 交做爰xxxⅹ性爽 | 高清av熟女一区 | 看片网址国产福利av中文字幕 | 天天av天天av天天透 | 国产精品内射视频免费 | 日韩视频在线播放 | 看全色黄大色黄大片 视频 欧美丰满大黑帍在线播放 在国产线视频a在线视频 | 99热在线精品免费 | 一边摸一边叫床一边爽av免费 | 国精品人妻无码一区免费视频电影 | 男人j进入女人j内部免费网站 | 欧洲美妇乱人伦视频网站 | 久草在线 | 亚洲人成电影在线观看网色 | 精品午夜福利在线视在亚洲 | 中文字幕久无码免费久久 | 国产又粗又长又大又黄 | 国产精品伦一区二区三级视频永妇 | 极品无码国模国产在线观看 | 主站蜘蛛池模板: 蛛词}| 爱情岛论坛一区二区 | 国产一级免费不卡 | 无人视频在线观看免费播放软件 | 性久久久久久久久久 | 蜜臀av性久久久久蜜臀aⅴ | 欧美一级一区 | 成 人 社区在线视频 | 人人澡人摸人人添学生av | 亚洲香蕉视频天天爽 | 精品久久久久久中文字幕人妻最新 | 精品福利av导航 | 18禁勿入午夜网站入口 | 国产亚洲人成网站在线观看琪琪秋 | 欧美极品少妇xxxx | 亚洲国产成人av国产自 | 亚洲性夜| 99精品久久99久久久久 | 妇挑战三黑人4p日本中文字幕 | 人人干人人舔 | 国产精品综合久久久精品综合蜜臀 | 久久无码精品一一区二区三区 | 高潮呻吟国产在线播放 | 久久视频这里有久久精品视频11 | 亚洲福利视频网站 | 免费能直接看黄的视频 | 欧美一区www | 天堂网www天堂在线资源 | 孕妇丨91丨九色 | 最新毛片网| 欧美大肥婆bbbww欧出奶水 | 蜜臀久久精品 | 人人妻人人爽人人澡av | 亚洲伊人久久久 | 99国内精品久久久久久久软件 | 国产成人免费高清激情视频 | 97久久精品人人澡人人爽缅北 | 亚洲aⅴ在线无码播放毛片一线天 | av狠狠 | 久久综合偷偷噜噜噜色 | 国产网址在线 | 久久夜色精品久久噜噜亚 | 成人三级k8经典网 | 日韩不卡在线视频 | 精品综合久久久久久888 | 久久人妻少妇偷人精品综合桃色 | 国产成人无码精品久久久露脸 | 无码专区 人妻系列 在线 | 日本视频免费高清一本18 | 欧美一区1区三区3区公司 | 在线|国产精品女主播阳台 视色影视 | 九九最新视频完整 | 妓女妓女一区二区三区在线观看 | 欧美国产一区二区在线观看 | 精产一二三产区m553 | 日韩女优在线播放 | 久久亚洲国产五月综合网 | 国产精品一区二区av | 亚洲中亚洲中文字幕无线乱码 | 极品国产主播粉嫩在线观看 | 主站蜘蛛池模板: 蛛词}| 又湿又紧又大又爽a视频国产 | 免费男人和女人牲交视频全黄 | 岛国av免费看 | 偷看少妇自慰xxxx | av免费观看网址 | 亚洲欧洲国产综合 | 国产夫妻一区 | 人妻饥渴偷公乱中文字幕 | 成人亚洲欧美在线观看 | 丁香花高清在线观看 | 两口子交换真实刺激高潮 | 日韩精品h| 美女精品久久久 | 国产xxx69麻豆国语对白 | 久久久888| 日本xxxx色视频在线观看 | 国产亚洲精品久久久久久网站 | 女性无套免费网站在线看 | 日韩少妇毛片 | 失禁潮痉挛潮喷av在线无码 | 人人玩人人添人人澡超碰偷拍 | 日本国产制服丝袜一区 | 国产aaa一级片 | 久久精品视频网站 | 刘亦菲国产毛片bd | 亚洲欧美成αⅴ人在线观看 | 盗摄精品av一区二区三区 | 小说区图片区 | 日本aa大片 | 亚洲国产精品一区二区三区 | 久久久久影院色老大2020 | 日本成夜色爽免费视频 | 九九色精品 | 女人张开腿让男人桶个爽 | 国产精品久久久久久久久免费樱桃 | 久久网国产 | 欧美一本乱大交性xxxⅹ | 91一起草| 露脸内射熟女--69xx | 性欧美老肥妇喷水 | 99热精品毛片全部国产无缓冲 | 亚洲 国产 另类 精品 专区 | 性久久久久久 | 国产日韩中文字幕 | 亚洲精品国产精品国自产观看浪潮 | 欧美成人免费在线 | 国产又粗又硬又猛的免费视频 | 在线观看片a免费不卡观看 日本护士吞精囗交gif | 国产区一区二区三 | 一级欧美一级日韩片 | 91亚洲精品乱码久久久久久蜜桃 | 成人午夜片av在线看 | 人妻丰满熟妇av无码区乱 | 日韩中文字幕在线一区二区三区 | 特级a欧美做爰片第一次 | 成人欧美一区二区三区黑人 | 欧洲在线一区 | 青青草在线视频免费观看 | 亚洲天天做日日做天天欢毛片 | 主站蜘蛛池模板: 蛛词}| 国产www在线 | 久久精品亚洲男人的天堂 | 欧美三日本三级三级在线播放 | 国产综合亚洲区在线观看 | 欧美成人r级一区二区三区 中文字幕日韩一区二区 | 国产一区在线免费观看视频 | 国产精品久久久久久中文字 | 伊人亚洲影院 | 亚洲a级黄色片 | 午夜黄色福利视频 | 久草在线在线 | 免费人妻无码不卡中文18禁 | 俄罗斯大胆熟少妇ⅹ╳bbww | 性一交一乱一色一视频 | 久久无码人妻精品一区二区三区 | 国产成人精品一区二三区四区五区 | 久久网中文字幕日韩精品专区四季 | 亚洲a∨大乳天堂在线 | 丰满人妻一区二区三区免费视频 | 午夜精品一区二区三区免费 | 国产精品原创巨作av | 日本女人色 | www啪| 日韩一区二区高清视频 | 欧美激情男女 | 亚洲第一黄网 | 亚洲欧美中文日韩v在线观看 | 无码日韩人妻精品久久 | 特黄网站 | 亚洲码无人客一区二区三区 | 国产视频精品在线 | 中国少妇嫖妓bbwbbw | 男人的天堂色偷偷 | 最新国产成人无码久久 | 久久精品福利 | 成人h动漫无码网站久久 | 国产成年妇视频 | 婷婷视频 | 首页干日本少妇 | 1024精品久久久久久久久 | 人人妻人人澡人人爽国产一区 | 天天插天天舔 | 在线播放免费播放av片 | 毛片免费全部播放无码 | 超薄肉色丝袜一二三四区 | 精品99久久久 | 成人精品一区二区三区在线观看 | 91国产丝袜脚调教 | 日韩欧美精品一区二区三区经典 | 久久久无码精品亚洲日韩啪啪网站 | 中文字幕人成无码人妻 | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 国产黄色一级 | 国语精品对白露脸少妇网站 | 66亚洲一卡2卡新区成片发布 | 久久人人爽人人爽人人片av东京热 | 亚洲乱码在线卡一卡二卡新区豆瓣 | 中文字幕视频网站 | 亚洲精品一区23p | 主站蜘蛛池模板: 蛛词}| 亚洲精品熟女国产 | 放荡短裙少妇大叫受不了视频 | 亚洲国产精品久久久久久女王 | 草草地址线路①屁屁影院成人 | 97香蕉久久国产在线观看 | 欧美人妻少妇精品久久黑人 | av狠狠色超碰丁香婷婷综合久久 | 一本色道久久88亚洲精品综合 | 久久国产天堂福利天堂 | 欧美成人片在线 | 综合激情网五月 | 日本丰满大乳乳液 | 伊人av中文av狼人av | 日韩综合在线观看 | 九九久久免费视频 | 五月天免费网站 | www..com国产| 男人的天堂中文字幕熟女人妻 | 日本黄色激情视频 | 国产三级手机在线 | 国产成人亚洲综合图区 | 欧美丰满老妇熟乱xxxxyyy | www.夜夜爽 | 97免费视频在线观看 | 蜜桃av在线看 | 亚洲成av人片在线观看香蕉 | 欧美一区二区三区激情在线视频 | 亚洲在线中文字幕 | 乌克兰xxxxx少妇精品二区 | 人人爽人人爽人人爽 | 亚洲欧美日韩成人一区二区三区 | 无码人妻精品一区二区三区夜夜嗨 | 天天天干干干 | 亚洲国产欧美日韩在线 | 日本免费三片免费观看 | 本道综合精品 | 一本大道大臿蕉视频无码 | 婷婷久久五月天 | 69福利网 | 亚韩无码av电影在线观看 | 精品色网 | 欧美成人三区 | 四虎影库永久在线 | 亚洲欧洲日产国码高潮αv 色综合久久无码中文字幕 久久国语露脸国产精品电影 | 在线黑人抽搐潮喷 | 日本少妇春药特殊按摩3 | 成人三级在线看 | 秋霞最新高清无码鲁丝片 | 欧美黑人粗大猛烈18p | 国产夜夜爽| 丰满爆乳在线播放 | 国产精品久久久久久吹潮 | 波多野结衣国产精品 | 亚洲欧洲另类 | 伊人狠狠色丁香婷婷综合 | 午夜亚洲国产理论片_日本 aaaaaaaa毛片 | 国产成人精品微拍视频网址 | 真人做人试看60分钟免费 | 丁香五月亚洲综合在线 |