VB驱动pcAnyWhere进行文件传输


  PCAnyWhere的 使用十分 容易,它的 使用 步骤在网上有十分 详尽的介绍,我就不再多说,我介绍一下利用VB驱动PCAnyWhere的 步骤 。

  在我的一个 名目中有特殊的 利用,有五个处于不同地方的计算机,有实时数据采集文件,我需求定时拔号上去,将上面的数据文件下载下来,这些数据文件随 工夫的不同就有不同,所以没有 步骤做固定的自动文件传输,为此我分别探究了软件提供script与OLE白皮书,最后决定选用OLE 。

  一、利用OLE进行远程衔接

  在OLE白皮书上,将OLE驱动写得十 清晰白,我 惟独将我的衔接代码帖上来,应该十 清晰白 。

  1、 审查MODEM是不是在 使用,因为PCAnyWhere启动后不能再由程序操纵,我们必须 审查MODEM是不是是空暇 威力确保拔号 可以顺利外拔 。 审查MODEM空暇可能通过 打开MODEM所在的串口是不是 顺利来推断 。

  2、生成RemoteDataManager对象

  3、进入C:DocumentsandSettingsAllUsersApplicationDataSymantecpcAnywhere,因为 PCAnyWhere安装时将配置文件都放在这个目录下,我们将运行路径切换到这个目录下, 可以更容易地 使用 。

  4、生成RemoteData对象,这要求在配置文件路径下有对应CHF文件上,这是在PCAnyWhere中配置的, 惟独名称与衔接 模式 雷同就 可以了 。

  5、设置拔号的电话号码,设置登录的消费者名与密码,设置进行自动传输的ATF文件,并将RunOnConnect设为TRUE,并将这此配置的 批改良行 保留 。

  6、开始拔号并自动传输文件 。

  7、延时,推断MODEM是不是空暇,空暇则这一次拔号、文件传输 结束(也有可能失败) 。推断已下载的文件,假如 批改 工夫已更新,则这次是 顺利的 。否则是失败的 。

  8、将RemoteData、RemoteDataManager对象 开释 。

  9、拔下一个点 。

IfcheckMODEMIdleThen

showBegin 诠释:显示开始信息

诠释:CreateCRemoteDataManagerobject

SetRemoteDataManager=CreateObject("WINAWSVR.RemoteDataManager")

RemoteDataManager.ChangeDirectory"C:DocumentsandSettingsAllUsersApplicationDataSymantecpcAnywhere"

S=RemoteDataManager.CurrentDirectory()

CHFile=xProfile.GetValue(WatchPoint(nowRunID),"CHFFILE") 诠释:用于拔号的配置

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

诠释:取文件 完毕,要进行转存 解决

moveDBFDatalocalpath

SetRemoteData=Nothing

SetRemoteDataManager=Nothing

nowRunID=nowRunID 1

EndIf

   留神:一次 结束后必须将RemoteData、RemoteDataManager对象 开释,否则会浮现错乱的 景象 。

  好了,拔号自动文件传输已经实现了,但这个文件传输是在PCANYWHERE中配置好的不变的自动文件传输,不能实现我要的依据 工夫不同下载不同文件的要求 。

  二、动态生成自动文件传输文件

  为了动态生成自动文件传输,自然要 批改自动文件传输文件的配置,可OLE中没有给出这方面的 性能,我只能另辟蹊径了 。

  用文本编辑器 打开ATF文件(自动文件传输文件),发现全是乱码,惟独路径 可以 鉴别 。 眉头一皱,计上心来用UltraEdit-32 打开并用十六进制 打开,哈, 机密全在其中 。

  ATF的系统文件 格局如下:

  04404154460100010100010101010001 诠释:第八位:00 示意增量下载,01所有再一次下载

  000000000000000100FFFF0000110043 诠释:第八位:00 示意文件传输 结束后不挂断,01 示意文件传输 结束后不挂断言C

  4175746F586665725F436F6D6D616E64AutoXfer_Command

  0113453A5C55534242414B5C32303033第一位是传输 模式:00发到主机01从主机 接纳02同步第二位是当地文件路径长度,后面的是当地文件路径

  312E64626614443A5C71746461746131 诠释:第六个主机文件路径长度,后面的是主机文件路径

  5C32303033312E646266

  有了文件的构成 格局,生成这么一个文件就不在话下了 。 惟独用二进制 模式生成这个文件,就 所有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发到主机01从主机 接纳02同步第二位是当地文件路径长度

诠释:312E64626614443A5C71746461746131 诠释:第六个主机文件路径长度

诠释: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发到主机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

诠释:二进制文件 打开

OnErrorResumeNext

OpenfilenameForBinaryAs#1

Forii=0To48 len1 len2 2

Put#1,,tx(ii)

Nextii

Close1

EndSub

  输入当地文件路径,主机文件路径,ATF文件名,就可生成这么一个文件,再将RemoteData.AutoXferFile设成新生成的ATF文件,你就 可以想传什么就传什么文件了,不过,有丝毫要 留神:这两个文件路径都是必须存在的,否则会出错 。

   论断:

  利用VB驱动pcAnyWhere是一件十分 容易的事件,但不是很好,首先它 无奈 实现由程序操纵,还有是在拔号与文件传输时会浮现操作界面, 无奈将其置为一个 后盾程序,而人工的 干涉也过于容易,不过,在解决我目前的问题方面,它是一个十分好的 取舍 。