Compa帽eros, buenas noches:
Necesito, por favor, de vuestra ayuda. Llevo varias horas intentando conectar con una balanza a trav茅s del puerto RS232 y pero la balanza NO me reporta ning煤n dato.
Mi c贸digo copiado y adaptado de otro hilo de este foro:
La lectura de la balanza es siempre la misma: NADA, es decir cBuffer=space(0)
NO muestra problemas a la hora de configurar el puerto, conectar ni setear. Creo que el problema est谩 a la hora de hacer la petici贸n a la b谩scula (comando WriteComm)
La balanza es marca GRAM modelo ZFOC y seg煤n su manual instrucciones el protocolo de comunicaci贸n via RS232 es el siguiente:
1. El PC transmite 0X44
2. El PC transmite el package una vez recibida la respuesta de la balanza 0x02
3. PC transmite el comando una vez recibida la respuesta de la balanza 0x02
4. Despues de que el PC reciba los datos de la balanza 0x02 , si se precisa transmitir el comando switch a c
5. PC envia el final del package
6. PC finaliza despues de recibir la respuesta 0x02
Comenzo del package, fixed 6 bytes: 11 00 00 00 00 EF5
Final del package, fixed 6 bytes: 33 00 00 00 00 CD
Por favor, necesito ayuda...
Mil gracias!!
LORENZO.
Necesito, por favor, de vuestra ayuda. Llevo varias horas intentando conectar con una balanza a trav茅s del puerto RS232 y pero la balanza NO me reporta ning煤n dato.
Mi c贸digo copiado y adaptado de otro hilo de este foro:
聽......
聽nComm:=OpenComm( nPuerto, 1024, 256)
聽IF nComm >= 0
聽 else
聽 聽msgalert('ERROR al NO encontrar el puerto '+nPuerto,'error...') ; return .f.
聽endif
聽If !BuildCommDcb( nPuerto+":"+alltrim(str(nbaudios))+","+nParidad+","+alltrim(str(nbitdatos))+","+alltrim(str(nbitparad)) , @cDcb )
聽 nError := GetCommError( nComm )
聽 Msgalert( "ERROR al Configurar el puerto "+nPuerto,'Error de conexi贸n con el puerto...') ; return .f.
聽endif
聽if ! SetCommState( nComm, cDcb )
聽 nError = GetCommError( nComm )
聽 Msgalert( "Error al setear Puerto : " + Str( nError ),'Aviso de error...' ) ; return .f.
聽endif 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽&& <-------- HASTA AQU脥 TODO PERFECTO !!! 聽 聽 聽
聽ncomand="chr(0X44)"
聽if ( nBytes := WriteComm( nComm, ncomand +Chr( 10 ) )) < 0 聽 聽 聽&& <------- HE PROBADO TAMBIEN INSERTANDO CHR(13) Y CHR(13)+CHR(10). 聽AQU脥 EST脕 EL PROBLEMA
聽 聽nError = GetCommError( nComm )
聽 聽Msgalert( "Error al realizar la petici贸n a la b谩scula : " + Str( nError ),'Aviso de error...' )
聽else
聽 聽DEFINE DIALOG oDlg TITLE "" OF oWPpal FROM 1,1 TO 12,44 STYLE nOr( WS_THICKFRAME, WS_POPUP )
聽 聽 @ 2,2 SAY oText PROMPT "Capturando el peso de la b谩scula... 聽 聽[ Salir: tecla ESC ]" OF oDlg
聽 聽ACTIVATE DIALOG oDlg NOWAIT CENTER
聽 聽Inkey(1)
聽endif
聽cBuffer:=Space(100)
聽nBytes := ReadComm (nComm,@cBuffer)
聽If FlushComm( nComm, 0 ) != 0
聽 聽nError = GetCommError( nComm )
聽 聽Msgalert("Error al vaciar el puerto de la b谩scula : " + Str( nError ),'Aviso de error...' )
聽endif
聽if ! CloseComm( nComm )
聽 聽nError = GetCommError( nComm )
聽 聽Msgalert( "Error al cerrar el puerto de la b谩scula : " + Str( nError ) )
聽endif
聽odlg:end()
? 'lectura balanza: '+cBuffer
聽 cKilos :=Substr(cBuffer,nPosIniEn,nPosFinEn-nPosIniEn)
聽 cGramos:=Substr(cBuffer,nPosIniDe,nposFinDe-nPosIniDe)
聽 nPesoBascula:=Val(Alltrim(cKilos)+"."+Alltrim(cGramos)) 聽; onPesoBascula:Refresh()
聽 SysRefresh()
returnLa lectura de la balanza es siempre la misma: NADA, es decir cBuffer=space(0)
NO muestra problemas a la hora de configurar el puerto, conectar ni setear. Creo que el problema est谩 a la hora de hacer la petici贸n a la b谩scula (comando WriteComm)
La balanza es marca GRAM modelo ZFOC y seg煤n su manual instrucciones el protocolo de comunicaci贸n via RS232 es el siguiente:
1. El PC transmite 0X44
2. El PC transmite el package una vez recibida la respuesta de la balanza 0x02
3. PC transmite el comando una vez recibida la respuesta de la balanza 0x02
4. Despues de que el PC reciba los datos de la balanza 0x02 , si se precisa transmitir el comando switch a c
5. PC envia el final del package
6. PC finaliza despues de recibir la respuesta 0x02
Comenzo del package, fixed 6 bytes: 11 00 00 00 00 EF5
Final del package, fixed 6 bytes: 33 00 00 00 00 CD
Por favor, necesito ayuda...
Mil gracias!!
LORENZO.