I use teraterm xmodem to send a file to my application X.
Please note teh timing are NOT the remmended timing for xmodem, but they are no real specification, just suggestion for the author.
When X receive a full block (lets say block 1), send back an ACK and wait ~15ms to see new data; but seems xmodem is taking up to 30ms.
That is not a big problem, my program send a NACK after 15ms, then wait again; I expect to receive again block 1 if the fisrt ACK was lost, or block 2 if ACK was received.
teraterm send block 2. Not a problem, i receive it and send an ACK.
BUT
now teraterm does NOT use the last receive byte (ACK) but instead uses the "old" NACK; it will resend block 2! that does not look as a big problem until you realize that ACK i sent will be seen as ACK for block 3, something we didn't even initialize.
A possible solution would be to use last received byte
I use teraterm xmodem to send a file to my application X. Please note teh timing are NOT the remmended timing for xmodem, but they are no real specification, just suggestion for the author. When X receive a full block (lets say block 1), send back an ACK and wait ~15ms to see new data; but seems xmodem is taking up to 30ms. That is not a big problem, my program send a NACK after 15ms, then wait again; I expect to receive again block 1 if the fisrt ACK was lost, or block 2 if ACK was received. teraterm send block 2. Not a problem, i receive it and send an ACK. BUT now teraterm does NOT use the last receive byte (ACK) but instead uses the "old" NACK; it will resend block 2! that does not look as a big problem until you realize that ACK i sent will be seen as ACK for block 3, something we didn't even initialize.
A possible solution would be to use last received byte