Waarom mijn gegevens verloren op rs-232?

W

winit_a

Guest
mijn programma is communicatie bestanden versturen of chatten op RS-232 (cross lijn)
gebruikt LSCOM controle op Visual Basic 6 met SP5

Ik lees bestandsgrootte en verzenden tot eind van het dossier
Ik teller byte bestand te verzenden = files size = OK
maar ontvangen zijde ontvangen gegevens van minder dan verzenden = fout
Ik weet niet waarom fout ontvangen van gegevens minder dan versturen

Stuur kant
'================================================= ==========
tFileNumber = FreeFile
File_Ptr = 1
File_Ptr_Tmp = 1
Open AFileName Voor Binary Zoals tFileNumber
Do Terwijl Aktueel (tFileNumber) <FileSize
tDataSendBuffer = Input (1, # tFileNumber)
tMessage = tMessage tDataSendBuffer
Statusbar.Panels.Item (2). Text = "Sending file ..." tDataSendBuffer
DoEvents
RS232Comm.Output = tDataSendBuffer
pgb1.Value = Aktueel (tFileNumber)
Statusbar.Panels.Item (1). Text = CStr (Loc (tFileNumber)) "/" CStr (filesize)
Loop
Sluiten tFileNumber

Ontvang kant
'================================================= ===========
Open AFileName Voor Binary Zoals tFileNumber
op gebeurtenis ontvangen
Put # tFileNumber, File_Ptr, ASC (ADataRecieveBuffer)
File_Ptr = File_Ptr 1

Bedankt

 
Hoi,
Allereerst, check je fysieke verbinding.Stuur een groot bestand met behulp van HyperTerminal, zmodem protocol aan de andere kant, met dezelfde kabel, en met dezelfde snelheid als in je app.Na voltooiing (indien succesvol), controle van het aantal fouten van Z-modem venster.Als het getal 0 is, dan is de bug is in uw programma.Zo niet, is uw verbinding lossy.Ik had hetzelfde probleem met het verlies van gegevens tussen een pc en een laptop, en het probleem was een lange kabel met een slechte afscherming draaiend op 115.200.
Beste,

 
Andere mogelijkheden Als u geen flow control gebruikt (hardware of XON XOFF), de ontvanger gewoon niet kan omgaan met de stroom.In feite kan net FIFO parameters aan te passen.Bij 115.200 baud (8N1), indien er geen FIFO, een IT-dienst moet worden vóór 86 Ls (1 / 115200), dus als multitasking os wordt gebruikt, het soms te laag.
Met 16 bits FIFO, deze tijd gegroeid tot 86 * 16 = 1,3 ms.Zijn niet als criticus als eerste een

 
Ik heb hetzelfde probleem voor.Maar uiteindelijk heb ik opgelost door het afremmen van de snelheid (het toevoegen van vertraging tussen elke byte).

 

Welcome to EDABoard.com

Sponsor

Back
Top