Red de conocimiento informático - Problemas con los teléfonos móviles - El controlador VB pcAnyWhere transfiere archivos.

El controlador VB pcAnyWhere transfiere archivos.

El uso de PCAnyWhere es muy simple. Hay instrucciones de uso detalladas en Internet, por lo que no entraré en detalles. Presentaré el método de usar VB para controlar PCAnyWhere.

Hay una aplicación especial en uno de mis proyectos. Hay cinco computadoras en diferentes lugares con archivos de recolección de datos en tiempo real. Necesito marcar el número con regularidad y descargar el archivo de datos anterior. Estos archivos de datos varían con el tiempo, por lo que no hay forma de realizar transferencias automáticas de archivos fijas. Así que investigué el software que proporciona scripts y documentos técnicos de OLE respectivamente, y finalmente decidí elegir OLE.

Primero, use OLE para conexión remota

En el documento técnico de OLE, el controlador OLE está escrito muy claramente. Sólo necesito pegar mi código de conexión y debería ser fácil de entender.

1. Verifique si el módem está en uso, porque el programa ya no puede controlar PCAnyWhere después de iniciarlo. Debemos verificar si el módem está inactivo para garantizar una marcación exitosa. Verifique si el módem está inactivo abriendo el puerto serie donde se encuentra el módem.

2. Generar objeto RemoteDataManager.

3. Ingrese C:DocumentsSandSettingSallusersApplicationDatasymantecPCAnyWhere. Dado que todos los archivos de configuración se colocan en este directorio al instalar PCAnywhere, cambiamos la ruta de ejecución a este directorio para que sea más conveniente de usar.

4. Genere un objeto RemoteData, que requiere un archivo CHF correspondiente en la ruta del archivo de configuración y configúrelo en PCAnyWhere, siempre que el nombre y el método de conexión sean los mismos.

5. Configure el número de teléfono marcado, el nombre de usuario y la contraseña de inicio de sesión, el archivo ATF transmitido automáticamente y configure RunOnConnect en TRUE para guardar la modificación de la configuración.

6. Comience a marcar y transfiera archivos automáticamente.

7. Retraso para determinar si el módem está inactivo. Si está inactivo, esta vez se completa la marcación y la transferencia de archivos (también puede fallar). Determinar los archivos descargados. Si se ha actualizado la hora de modificación, esta vez tiene éxito. De lo contrario es un fracaso.

8. Libere los objetos RemoteData y RemoteDataManager.

9. Desenchufar un punto.

IfcheckMODEMIdleThen

ShowBeginNota: muestra la información de inicio.

Nota: CreateCRemoteDataManagerobject

SetRemoteDataManager = CreateObject(" WINAWSVR.RemoteDataManager")

RemoteDataManager. cambiar directorio " C:DocumentsandSettingsAllUsersApplicationDataSymantecpcAnywhere "

S=RemoteDataManager. Directorio actual()

archivo ch = x perfil. getvalue(punto de observación(ahora rund), "archivo CHF")Observaciones: Configuración de acceso telefónico.

SetRemoteData = administrador de datos remoto. RetrieveObject(CHFile, 2, 0)

Datos remotos. número de teléfono = x perfil. GetValue(punto de observación(nowRunID), "PHONENUM")

Datos remotos.

AutoXferFile=nombre de archivo

Datos remotos. AutoLoginName=xPerfil. GetValue(punto de observación(nowRunID), "nombre de usuario")

Datos remotos. AutoLoginPassword=xPerfil. GetValue(ObservationPoint(nowRunID), " PSW ")

Datos remotos. RunOnConnect=True

Datos remotos. WriteObject(0)

S=RemoteData. Número de teléfono

Datos remotos. Iniciar

Dormir 30000

Hacer

IfcheckMODEMIdleThenExitDo

Actividades múltiples

Dormir 5000

Ring

Nota: Después de obtener el archivo, debe exportarlo.

moveDBFDatalocalpath

SetRemoteData =Ninguno

SetRemoteDataManager =Ninguno

nowRunID=nowRunID 1

EndIf

Nota: Los objetos RemoteData y RemoteDataManager deben liberarse una vez; de lo contrario, se producirá confusión.

Bueno, se ha implementado la transferencia automática de archivos por acceso telefónico, pero esta transferencia de archivos es una transferencia automática constante de archivos configurada en PCANYWHERE, que no puede cumplir con mis requisitos de descargar diferentes archivos según diferentes momentos.

En segundo lugar, generar dinámicamente archivos de transferencia automática de archivos

Para generar dinámicamente archivos de transferencia automática de archivos, es natural modificar la configuración de los archivos de transferencia automática de archivos, pero esta función no es proporcionado en OLE tuve que encontrar otra manera.

Cuando abrí el archivo ATF (archivo de transferencia automática de archivos) con un editor de texto, descubrí que estaba todo confuso y solo podía identificar la ruta. Tuve una idea y la abrí con UltraEdit-32 y la abrí con hexadecimal. Ja, todos los secretos están ahí.

El formato de archivo del sistema de ATF es el siguiente:

044041544 6010010010101010001 Nota: El octavo lugar: 00 significa descarga incremental, 065438.

00000000000000000000100 fff 000110043 Nota: El octavo dígito: 00 significa no colgar después de la transferencia de archivos, 01 significa no colgar después de la transferencia de archivos.

4175746 f 586665725 f 436 f 6 d6d 616e 64 auto xfer _ Command

0113453 a5c 5534242414b 5c 32303033 El primer bit es el modo de transmisión: 00 al host 01 y recibe 02 del host sincrónicamente. El segundo dígito es la longitud de la ruta del archivo local, seguido de la ruta del archivo local.

312e 646261443 a5c 7174641746131 Nota: La longitud de la sexta ruta del archivo host va seguida de la ruta del archivo host.

5C32303033312E646266

Con el formato de síntesis de archivos, generar dicho archivo no es un problema. Siempre que el archivo sea binario, todo está bien.

publicsubakautffile(ByVallocalpathAsString, ByValremotepathAsString, ByValfilenameAsString)

Dimtx()AsByte

dimias entero

Dimlen1, len2AsInteger

len1=Len (ruta local)

len2=Len (ruta remota)

ReDimtx(0 a 48 len1 len2 2)

Nota: 044041544 6010010010101010001 Nota: El octavo dígito: 00 indica descarga incremental.

Nota: 00000000000000100 fff 000110043 c.

Observaciones: 4175746 f 58665725 f 436 f 6d 616e 64 auto xfer _ comando.

Nota: 0113453 a5c 55342414 b5 c 32303033 El primer dígito es el modo de transmisión: 00 al host 01 y recibe 02 del host sincrónicamente, y el segundo dígito es la longitud de la ruta del archivo local.

Nota: 312e 646261443 a5c 7174641746131Nota: La longitud de la ruta del sexto archivo host.

Nota: 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

Observaciones: 4175746 f 58665725 f 436 f 6d 616e 64 auto xfer _ comando.

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

Nota: 0113453 a5c 55342414b 5c 32303033 El primero es el método de transmisión: 00 al host 01 desde el host.

tx(48)=H1

tx(49)=len1

forii = 1 tolen1

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

Nextii

tx(49 len1 1)=len2

Forii=1Tolen2

tx(49 ii len 1 1)= Asc(Mid(ruta remota, ii, 1))

Nextii

Nota: el archivo binario está abierto.

OnErrorResumeNext

OpenfilenameForBinaryAs # 1

Forii = to 48 len1 len2 2

Coloque #1,,tx(ii) p>

Siguienteii

Cerrar1

Conector final

Ingrese la ruta del archivo local, la ruta del archivo del host y el nombre del archivo ATF para generar dicho archivo. y luego configure RemoteData. AutoXferFile funciona como un archivo ATF recién generado, por lo que puedes transferir cualquier archivo que desees. Sin embargo, hay una cosa a tener en cuenta: ambas rutas de archivo deben existir; de lo contrario, se producirá un error.

Conclusión:

Usar VB para manejar pcAnyWhere es algo muy simple, pero no muy bueno. En primer lugar, no puede ser controlado por un programa. Hay una interfaz de operación durante el acceso telefónico y la transferencia de archivos. No se puede configurar como un programa en segundo plano. La intervención manual es demasiado fácil. Sin embargo, es una muy buena opción para solucionar mi problema actual.