Newsgroup: it.comp.lang.visual-basic
Titolo: Comunicare con un POS .... ci riprovo!

Ciao a tutti, scusate riprovo a mettere il messaggio perchè ancora non
sono riuscita a risolvere il problema, che è questo:
devo chiacchierare con un pos, quei cosi per pagare con bancomat e carte
di credito.
Ho trovato come costruire le stringhe per mandargli i messaggi, però in
fondo ci vuole un carattere chiamato LRC.
Questo carattere, secondo la documentazione che ho, viene costruito
così: eseguendo l'OR esclusivo su tutti i byte del messaggio assumento
come valore base di calcolo 7F hex.
Ho provato a prendere come valore iniziale 7F e poi a fare l'xor con
l'ascii degli altri byte del messaggio precedentemente contruito ma
niente!
Ho provato a scarica ed utilizzare una dll che mi ha suggerito uno di
voi ma niente!
Mi risponde sempre con un messaggio che corrisponde al messaggio di
errore e con un LRC diverso dal mio....
Qualcuno ha da suggerirmi qualcosa, sono disperata!!!!
Grazie 1000
Francesca
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG



Senti Francesca,
Non č che ci potresti mandare le frasi esatte descritte nella
documentazione, cosě ci facciamo
un'idea un pň piů precisa della cosa?
Grazie
Andrea

Allora:
il messaggio ad esempio di apertura deve essere cosě composto:
Lunghezza         Tipo                 Contenuto
1                 alfanumerico         STX (in ascii = 2)
9                 numerico             identificativo terminale
(000000000)
1                 alfanumerico         Codice Messaggio "e" (in ascii =
101)
6                 numerico             codice cassiere (000000)
1                 alfanumerico         ETX (in ascii = 3)
1                 alfanumerico         LRC
Il carattere LRC viene calcolato eseguendo l'operazione di XOR su tutti
i byte del messaggio assumendo come valore base di calcolo 7F hex.
Io gli mando una stringa fatta cosě: 
Chr$(2) & "000000000" & Chr$(101) & "000000" & Chr$(3) 
alla quale perň va aggiunto questo LRC
Lui mi restituisce sempre un messaggio di errore
Lunghezza         Tipo                 Contenuto
1                 alfanumerico         NAK (in ascii = 21)
1                 alfanumerico         ETX (in ascii = 3)
1                 alfanumerico         LRC 
l'LRC che calcola lui č "i".









 Chr$(2) & "000000000" & Chr$(101) & "000000" & Chr$(3)
scusa mi sembrano che sia tutti alfanumerici quelli che hai inserito, invece
da quello che ho capito alcuni devono essere numerici
--------------------------------
Inviato via 
http://usenet.libero.it

 wrote in message
news:217Z59Z30Z242Y1...@usenet.libero.it



 sono riuscita a risolvere il problema, che è questo:
Mi sa che sei infilata in un ginepraio più grande di te!
In genere ogni terminale ha gia ilsuo driver ed il suo SDK per sviluppare
applicazioni!
Questo perchè come ti ho detto già quello con cui hai a che fare non sono
semplici stringhe...ma un protocollo di comunicazione!
In genere "ste robe" son fatte da un driver o da un programma che (a seconda
della marca) espone funzioni di alto livello agli sviluppatori!!!
Tu invece lo vuoi gestire a basso livello (cosa che forse andrebbe meglio in
Delphi o in C)
cmq..sto LRC è il controllo finale sulla correttezza dei dati prima
trasmessi
Non sono un esperto....non ci vuole un informatico...ma un ingegnere
elettronico qui....
ma la comunicazione avviene secondo lo schema
STX testo ETX LRC
questa è una trasmissione binaria sincrona....
da una ricerca su google
STX ETX LRC
vien fuori un po di roba...tra cui
http://www.ece.utexas.edu/~valvano/manual/Lab11.pdf
che ha anche un po di codice......
Buono studio....!
e in bocca al lupo!
(io so però che a seconda della marca i terminali pos hanno anche un kit di
sviluppo!....fattelo comprare!...)


ed anche
http://www.automatas.org/modbus/crc7.html

l'LRC che calcola lui è "i".
Io l'ho ottenuto così :
Valore di partenza 7F   ( decimale = 127 )
1) Risultato = 127 XOR 21    => Risultato diventa 106
2) Risultato = 106 XOR  3     => Risultato diventa 105,
                                                    che corrisponde al
valore ASCII di "i"
Ciao
Paolo