167 messaggi dal 08 dicembre 2003
Il registratore non ha un proprio IP. E' collegato al PC su porta seriale RS232.
L'applicazione in background del registratore è in polling su una particolare cartella, dove se trova il file Scontrino.txt lo stampa.
Per poter gestire più client ho messo in condivisione la cartella e scrivo il file Scontrino.txt da ogni singolo client, ovviamente controllando l'eventuale presenza di un altro Scontrino.txt e, nel caso, attendendo che venga elaborato (ciclo di ritardo).
Nonostante ciò però mi capita che talvolta vada in blocco.
Ho già provato ad abbassare/alzare la velocità di comunicazione della seriale ma senza successo.
135 messaggi dal 01 febbraio 2017
La sincronizzazione con scrittura file da diversi client sullo stesso file, non è sicura. Ti consiglierei di "liberare" subito i client facendoli scrivere in una loro cartella dedicata (anche su risorsa condivisa) e poi "sdoppiare" la logica di gestione del file scontrino.TXT, implementandola a livello del "server" cioè quello dove è collgato via seriale il reg. cassa (è Casio ?).

In questo modo i Client sono liberi di scrivere sul loro file (lasciando la logica di attesa che già hai), mentre una applicazione server si occuperà di leggere le varie cartelle e "preparare" il file scontrino.txt per il registratore di cassa. Ognuno fa solo il proprio lavoro, senza accavallamenti.

Ciao.

Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
167 messaggi dal 08 dicembre 2003
Buongiorno Moreno... chiedo cortesemente di nuovo il tuo aiuto. Come accennavo nei post precedenti, la stringa che passo diventa sempre più corposa tanto che ora superato un certo numero di caratteri non viene più eseguita.
Per costruirla utilizzo StringBuilder... mi sai dire se c'è un limite massimo di caratteri che posso passare all'oramai famosissimo Stampascontrino:stringaparametri
Ho anche provato a passare un array al posto della stringa ma mi sono reso conto che non è possibile per i problemi legati al ByVal e ByRef.
Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
quanto è lunga la stringa al momento? Può crescere indefinitamente?
Non è che per caso non stai rispettando le regole degli URL?

Leggi qui sui caratteri che puoi usare.
https://en.wikipedia.org/wiki/Uniform_Resource_Identifier

Of the ASCII character set, the characters : / ? # [ ] @ are reserved for use as delimiters of the generic URI components and must be percent-encoded


Posta un esempio di stringa.

ciao,
Moreno
Modificato da BrightSoul il 14 aprile 2018 22.59 -

Enjoy learning and just keep making
167 messaggi dal 08 dicembre 2003
Ciao, sono riuscito a capire dov'era il problema. Tutto nasce dall'uso del registratore di cassa Olivetti Nettuna 300 che, data l'obsolescenza del suo firmware, non interpretava correttamente la stringa passata con i parametri poichè quest'ultima conteneva i prime 3 caratteri BOM (Byte Order Mark della codifica UTF-8) aggiunti dall'istruzione StringBuilder.
Andavo in confusione perchè in alcuni casi funzionava, ovvero quando c'era da stampare righe descrittive, mentre in altri no (ed era il caso della string con molti caratteri) ovvvero quando inviava comandi di tipo 'fiscale'.
167 messaggi dal 08 dicembre 2003
Rieccomi con un nuovo quesito sempre inerente il protocollo Scontrino:
Mi sorge la necessità che una volta chiamato il protocollo \\Scontrino devo far riprendere l'esecuzione del programma da dove era rimasto.
Nel mio caso richiamo così il protocollo

Private Sub Script_Scontrino(ByVal Parametri As String)
ClientScript.RegisterStartupScript(Me.GetType(), "StampaScontrino", "<Script language='JavaScript'>window.location.href='StampaScontrino:" + Parametri + "';</" & "Script>")
End Sub

ma purtroppo l'esecuzione si interrompe e non vengono eseguite le altre istruzioni successive.

Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
per cortesia, fornisci qualche chiarimento in più. In particolare non è chiaro a cosa ti riferisci quando dici:


devo far riprendere l'esecuzione del programma da dove era rimasto.


Cosa intendi con "programma"? L'applicazione web? O l'applicazione che stampa lo scontrino?
Se intendi l'applicazione web, cosa deve fare dopo aver inviato i parametri per la stampa dello scontrino?

ciao,
Moreno

Enjoy learning and just keep making
167 messaggi dal 08 dicembre 2003
Scusa... sono stato troppo irruento.
Per 'programma' intendo l'applicazione Web.
Il 'programma' richiama lo script per stampare lo scontrino. Finita la stampa dello scontrino mi aspetto che, sempre il 'programma', riprenda l'esecuzione con l'istruzione seguente al richiamo dello script per stampare lo scontrino.

Cercherò di essere più chiaro con un esempio:
Sub VenditaOk
...
...
StampaScontrino(Parametri)
Pippo = Session("Pluto")
ecc.
ecc.
End Sub

Private Sub Script_Scontrino(ByVal Parametri As String)
ClientScript.RegisterStartupScript(Me.GetType(), "StampaScontrino", "<Script language='JavaScript'>window.location.href='StampaScontrino:" + Parametri + "';</" & "Script>")
End Sub

In pratica, sempre per esempio, non mi esegue l'assegnazione della variabile Pippo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.