Programma in C su A1200 per trasferimento file PC -> Amiga

Hello world!

Programma in C su A1200 per trasferimento file PC -> Amiga

Messaggioda AMG_Novice_Usr » sab mag 16, 2020 7:19 pm

Buonasera,
vorrei sottoporvi questo quesito.

Sto cercando di preparare un programmino in C nell’ambiente di sviluppo per C/C++ per Amiga “StormC 3.0”.

Il programmino in questione, che deve girare su un A1200 reale, è il seguente (codice sorgente):

https://drive.google.com/file/d/1Lfs-by ... EPt-o/view

Come vedete, la filosofia è banale, ovvero apro il file/device della porta seriale di Amiga “AUX:” (SER: ha un problema … rimando a post successivi, eventualmente, questo approfondimento “AUX:” vs “SER:”), porta seriale opportunamente pre-impostata tramite le Prefs (quindi IPrefs) in modo da matchare con le caratteristiche (baud-rate, numero di stop bits, parity bit e hand-shaking) della seriale lato PC/Windows.

Dicevo, apro in lettura il primo file AUX: da cui devo leggere/prelevare i bytes man mano che questi arrivano dal PC/Windows, poi apro un secondo file “pippo.txt”, questo in scrittura, il quale riceve i bytes che arrivano via seriale.
Lato PC sto usando un programmino chiamato RealTerm, per non stare a farmi da solo il programma trasmettitore:

https://drive.google.com/file/d/1OcRkcG ... idQ2T/view
Avatar utente
AMG_Novice_Usr

Amico
 
Messaggi: 43
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Programma in C su A1200 per trasferimento file PC -> Ami

Messaggioda AMG_Novice_Usr » sab mag 16, 2020 7:22 pm

Vi mostro un brevissimo video che descrive il problema che lamento:

https://drive.google.com/file/d/1xh-JtJ ... B2vK2/view

Come vedete, appena lancio il SEND di questo file testuale di prova (le frasi ASCII sono idiote, random, giusto per vedere se su A1200 riuscivo a ricevere qualcosa):

https://drive.google.com/file/d/1XY4ar1 ... LlJrT/view

il programma sender su PC/Windows sembra fare il suo dovere, il mio programmino su Amiga sembra fare il suo dovere, dal byte 1 al byte 232 (il file .txt in questione consta di 239 bytes), poi appena viene ricevuto il byte 232, il ciclo “for” su Amiga di raccolta dei bytes proveniente dal PC, tramite seriale AUX, si blocca: per sboccare il processo, devo inviare il byte decimale 28, ovvero FS (File Separator).

Se infatti invio il byte decimale 28, il processo termina con successo, poiché arrivano i pochi rimanenti bytes dal 233 fino al byte 239, a quel punto il file è finito, quindi feof() ritorna 1, quindi esco dal loop, quindi fine della storia.

Se controllo il path/file di destinazione "pippo.txt", in effetti trovo il file correttamente transitato da PC ad Amiga.

https://drive.google.com/file/d/1jyYxm6 ... NhAxT/view
Avatar utente
AMG_Novice_Usr

Amico
 
Messaggi: 43
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Programma in C su A1200 per trasferimento file PC -> Ami

Messaggioda AMG_Novice_Usr » sab mag 16, 2020 7:25 pm

Le mie domande sarebbero:

1)

Per quale motivo il flusso TX->RX->fgetc() raccolta dei bytes in transito si blocca al byte 232-esimo? E perché devo mandare il decimale 28 per far finire il trasferimento del file CC.txt?

Io ho pensato ad un discorso di buffer su AUX:

ho provato ad annullare il buffer, mettendo nella mia User-startup-sequence:

C:AddBuffer >NIL: 0

E ho anche provato ad usare la funzione fflush(), come vedete nei commenti del sorgente, questo per avere un controllo non bufferizzato, cioè per avere il pieno controllo byte-wise del flusso nelle mie mani, ma senza successo.

Ho anche tentato la strada opposta, ovvero assegnare alla seriale un buffer grande, ma nulla è cambiato: continuo ad avere l’interruzione al byte 232-esimo.
Avatar utente
AMG_Novice_Usr

Amico
 
Messaggi: 43
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Programma in C su A1200 per trasferimento file PC -> Ami

Messaggioda AMG_Novice_Usr » sab mag 16, 2020 7:27 pm

2)

Ci sono metodi in C/C++ migliori per implementare questa applicazione?

3)

Se al posto di un file testuale, io volessi trasferire da PC ad Amiga un file di altro genere, ad esempio un archivio .zip oppure .lha (che è poi il mio obbiettivo finale) … beh … ho già provato, ma ad un certo punto, al byte N-esimo, si pianta il trasferimento, esattamente come avviene per il file testuale.

Sapete spiegarmi cosa sta accadendo, e come risolvere?
Grazie!
Avatar utente
AMG_Novice_Usr

Amico
 
Messaggi: 43
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Programma in C su A1200 per trasferimento file PC -> Ami

Messaggioda MacGyverPPC » ven lug 17, 2020 1:32 am

Se stai usando il vecchio cavo in null modem tra pc e amica ,prova con questo ( easytransfer )
http://www.mediafire.com/file/z7kd1skm9 ... r.lzh/file
Sito con spiegazioni e schema per cablaggio serial tra amiga/pc https://gaetanoformicolafaidate.it/inde ... o-seriale/
OS4.1.3Immagine+SAM= ImmagineNG c'è!
SAM440EP: OS4.1.4Up4:con USB2.0 UP,RunInUae integrato con Kickstart 3.1,1.3,CD32 originali, MUI migliorato ecc/HD400GbSata/masterizzatore sataDVD/SB Audigy5.1.
AMIGA1200PPC/060(HomeTower):OS4Classic/USB/BlizzardPPC/BVision/Ram128Mb/HD/CD-DVD/RW :rock:
AMIKIT WinUAE:OS3.9/OS4 FE : AMD A8 x64
Immagine
Advance
Multitask
Integrated
Grafic
Architecture
Avatar utente
MacGyverPPC

Leggenda
 
Messaggi: 10761
Iscritto il: sab set 22, 2007 4:51 pm
Località: Alessandria


Torna a Programmazione su Amiga

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti