国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VB驅(qū)動(dòng)pcAnyWhere進(jìn)行文件傳輸

2019-11-18 17:53:36
字體:
供稿:網(wǎng)友
PCAnyWhere的使用非常簡(jiǎn)單,它的使用方法在網(wǎng)上有非常詳細(xì)的介紹,我就不再多說,我介紹一下利用VB驅(qū)動(dòng)PCAnyWhere的方法。

  在我的一個(gè)項(xiàng)目中有特別的應(yīng)用,有五個(gè)處于不同地方的計(jì)算機(jī),有實(shí)時(shí)數(shù)據(jù)采集文件,我需要定時(shí)拔號(hào)上去,將上面的數(shù)據(jù)文件下載下來,這些數(shù)據(jù)文件隨時(shí)間的不同就有不同,所以沒有辦法做固定的自動(dòng)文件傳輸,為此我分別研究了軟件提供script與OLE白皮書,最終決定選用OLE。

  一、利用OLE進(jìn)行遠(yuǎn)程連接

  在OLE白皮書上,將OLE驅(qū)動(dòng)寫得十分明白,我只要將我的連接代碼帖上來,應(yīng)該十分明白。

  1、檢查MODEM是否在使用,由于PCAnyWhere啟動(dòng)后不能再由程序控制,我們必須檢查MODEM是否是空閑才能確保拔號(hào)可以順利外拔。檢查MODEM空閑可能通過打開MODEM所在的串口是否成功來判斷。

  2、生成RemoteDataManager對(duì)象

  3、進(jìn)入C:/DocumentsandSettings/AllUsers/applicationData/Symantec/pcAnywhere,由于 PCAnyWhere安裝時(shí)將配置文件都放在這個(gè)目錄下,我們將運(yùn)行路徑切換到這個(gè)目錄下,可以更方便地使用。

  4、生成RemoteData對(duì)象,這要求在配置文件路徑下有對(duì)應(yīng)CHF文件上,這是在PCAnyWhere中配置的,只要名稱與連接方式相同就可以了。

  5、設(shè)置拔號(hào)的電話號(hào)碼,設(shè)置登錄的用戶名與密碼,設(shè)置進(jìn)行自動(dòng)傳輸?shù)腁TF文件,并將RunOnConnect設(shè)為TRUE,并將這此配置的修改進(jìn)行保存。

  6、開始拔號(hào)并自動(dòng)傳輸文件。

  7、延時(shí),判斷MODEM是否空閑,空閑則這一次拔號(hào)、文件傳輸完畢(也有可能失敗)。判斷已下載的文件,如果修改時(shí)間已更新,則這次是成功的。否則是失敗的。

  8、將RemoteData、RemoteDataManager對(duì)象釋放。

  9、拔下一個(gè)點(diǎn)。

IfcheckMODEMIdleThen

showBegin注釋:顯示開始信息

注釋:CreateCRemoteDataManagerobject

SetRemoteDataManager=CreateObject("WINAWSVR.RemoteDataManager")

RemoteDataManager.ChangeDirectory"C:/DocumentsandSettings/AllUsers/ApplicationData/Symantec/pcAnywhere"

S=RemoteDataManager.CurrentDirectory()

CHFile=xPRofile.GetValue(WatchPoint(nowRunID),"CHFFILE")注釋:用于拔號(hào)的配置

SetRemoteData=RemoteDataManager.RetrieveObject(CHFile,2,0)

RemoteData.PhoneNumber=xProfile.GetValue(WatchPoint(nowRunID),"PHONENUM")

RemoteData.AutoXferFile=filename

RemoteData.AutoLoginName=xProfile.GetValue(WatchPoint(nowRunID),"USERNAME")

RemoteData.AutoLoginPassWord=xProfile.GetValue(WatchPoint(nowRunID),"PSW")

RemoteData.RunOnConnect=True

RemoteData.WriteObject(0)

S=RemoteData.PhoneNumber

RemoteData.Launch

Sleep30000

Do

IfcheckMODEMIdleThenExitDo

DoEvents

Sleep5000

Loop

注釋:取文件結(jié)束,要進(jìn)行轉(zhuǎn)存處理

moveDBFDatalocalpath

SetRemoteData=Nothing

SetRemoteDataManager=Nothing

nowRunID=nowRunID 1

EndIf

  注意:一次完畢后必須將RemoteData、RemoteDataManager對(duì)象釋放,不然會(huì)出現(xiàn)錯(cuò)亂的現(xiàn)象。

  好了,拔號(hào)自動(dòng)文件傳輸已經(jīng)實(shí)現(xiàn)了,但這個(gè)文件傳輸是在PCANYWHERE中配置好的不變的自動(dòng)文件傳輸,不能實(shí)現(xiàn)我要的根據(jù)時(shí)間不同下載不同文件的要求。

  二、動(dòng)態(tài)生成自動(dòng)文件傳輸文件

  為了動(dòng)態(tài)生成自動(dòng)文件傳輸,自然要修改自動(dòng)文件傳輸文件的配置,可OLE中沒有給出這方面的功能,我不得不另辟蹊徑了。

  用文本編輯器打開ATF文件(自動(dòng)文件傳輸文件),發(fā)現(xiàn)全是亂碼,只有路徑可以識(shí)別。靈機(jī)一動(dòng)用UltraEdit-32打開并用十六進(jìn)制打開,哈,秘密全在其中。

  ATF的系統(tǒng)文件格式如下:

  04404154460100010100010101010001注釋:第八位:00表示增量下載,01全部重新下載

  000000000000000100FFFF0000110043注釋:第八位:00表示文件傳輸完畢后不掛斷,01表示文件傳輸完畢后不掛斷言C

  4175746F586665725F436F6D6D616E64AutoXfer_Command

  0113453A5C55534242414B5C32303033第一位是傳輸方式:00發(fā)到主機(jī)01從主機(jī)接收02同步第二位是本地文件路徑長(zhǎng)度,后面的是本地文件路徑

  312E64626614443A5C71746461746131注釋:第六個(gè)主機(jī)文件路徑長(zhǎng)度,后面的是主機(jī)文件路徑

  5C32303033312E646266

  有了文件的組成格式,生成這么一個(gè)文件就不在話下了。只要用二進(jìn)制方式生成這個(gè)文件,就一切OK了。

PublicSubmakeATFFile(ByVallocalpathAsString,ByValremotepathAsString,ByValfilenameAsString)

Dimtx()AsByte

DimiiAsInteger

Dimlen1,len2AsInteger

len1=Len(localpath)

len2=Len(remotepath)

ReDimtx(0To48 len1 len2 2)

注釋:04404154460100010100010101010001注釋:第八位:00表示增量下載,01自然下載

注釋:000000000000000100FFFF0000110043C

注釋:4175746F586665725F436F6D6D616E64AutoXfer_Command

注釋:0113453A5C55534242414B5C32303033第一位是傳輸方式:00發(fā)到主機(jī)01從主機(jī)接收02同步第二位是本地文件路徑長(zhǎng)度

注釋:312E64626614443A5C71746461746131注釋:第六個(gè)主機(jī)文件路徑長(zhǎng)度

注釋:5C32303033312E646266

tx(0)=&H4

tx(1)=&H40

tx(2)=&H41

tx(3)=&H54

tx(4)=&H46

tx(5)=&H1

tx(6)=&H0

tx(7)=&H1

tx(8)=&H1

tx(9)=&H0

tx(10)=&H1

tx(11)=&H1

tx(12)=&H1

tx(13)=&H1

tx(14)=&H0

tx(15)=&H1

tx(16)=&H0

tx(17)=&H0

tx(18)=&H0

tx(19)=&H0

tx(20)=&H0

tx(21)=&H0

tx(22)=&H0

tx(23)=&H1

tx(24)=&H0

tx(25)=&HFF

tx(26)=&HFF

tx(27)=&H0

tx(28)=&H0

tx(29)=&H11

tx(30)=&H0

tx(31)=&H43

注釋:4175746F586665725F436F6D6D616E64AutoXfer_Command

tx(32)=&H41

tx(33)=&H75

tx(34)=&H74

tx(35)=&H6F

tx(36)=&H58

tx(37)=&H66

tx(38)=&H65

tx(39)=&H72

tx(40)=&H5F

tx(41)=&H43

tx(42)=&H6F

tx(43)=&H6D

tx(44)=&H6D

tx(45)=&H61

tx(46)=&H6E

tx(47)=&H64

注釋:0113453A5C55534242414B5C32303033第一位是傳輸方式:00發(fā)到主機(jī)01從主

tx(48)=&H1

tx(49)=len1

Forii=1Tolen1

tx(49 ii)=Asc(Mid(localpath,ii,1))

Nextii

tx(49 len1 1)=len2

Forii=1Tolen2

tx(49 ii len1 1)=Asc(Mid(remotepath,ii,1))

Nextii

注釋:二進(jìn)制文件打開

OnErrorResumeNext

OpenfilenameForBinaryAs#1

Forii=0To48 len1 len2 2

Put#1,,tx(ii)

Nextii

Close1

EndSub

  輸入本地文件路徑,主機(jī)文件路徑,ATF文件名,就可生成這么一個(gè)文件,再將RemoteData.AutoXferFile設(shè)成新生成的ATF文件,你就可以想傳什么就傳什么文件了,不過,有一點(diǎn)要注意:這兩個(gè)文件路徑都是必須存在的,不然會(huì)出錯(cuò)。

  結(jié)論:

  利用VB驅(qū)動(dòng)pcAnyWhere是一件非常簡(jiǎn)單的事件,但不是很好,首先它無法完成由程序控制,還有是在拔號(hào)與文件傳輸時(shí)會(huì)出現(xiàn)操作界面,無法將其置為一個(gè)后臺(tái)程序,而人工的干預(yù)也過于容易,不過,在解決我當(dāng)前的問題方面,它是一個(gè)非常好的選擇。

->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武隆县| 太谷县| 溧阳市| 理塘县| 自治县| 东光县| 芒康县| 三河市| 呼伦贝尔市| 江川县| 扎鲁特旗| 两当县| 灵寿县| 综艺| 乌拉特后旗| 休宁县| 霍林郭勒市| 伊吾县| 西华县| 南康市| 青铜峡市| 盐津县| 北川| 德兴市| 理塘县| 屯门区| 淄博市| 舞钢市| 桂平市| 武威市| 昌江| 永川市| 泸西县| 南川市| 福州市| 新巴尔虎左旗| 陇西县| 屏南县| 武鸣县| 鲁山县| 宜春市|