
emanuele19956 (Normal User)
Newbie
    
Messaggi: 19
Iscritto: 19/05/2013
|
Salve a tutti, sono nuovo del forum
Spero di essere nella sezione giusta, dato che quello che voglio scrivere tocca diversi ambiti.
Quello che voglio fare è un software in C++ che includa codice assembly in grado di controllare la comunicazione tra due pc tramite porta seriale.
Scrivo non per farmi aiutare nell'algoritmo da implementare (a cui voglio lavorare da solo), ma solamente nei passaggi che devo fare per far funzionare il tutto. L'ambiente che uso è Visual Studio 2012.
Il problema principale si manifesta nel momento in cui chiamo gli interrupt del bios. Il punto è che la mia scheda madre è piuttosto avanzata e purtroppo non è dotata di porta seriale, cosicché quando, ad esempio, chiamo l'int 14h Windows mi dà un errore madornale. Come posso fare per lavorare comunque? Esiste un modo per simulare la porta seriale? E soprattutto la porta simulata verrebbe riconosciuta da un linguaggio a basso livello come assembly?
In realtà l'obiettivo finale è quello di integrare poi il codice C++ in un programma in Visual Basic cosicché la porta seriale possa essere controllata tramite interfaccia grafica ed eventi.
Mi rendo conto di non aver spiegato benissimo, ma non so fin dove posso spingermi dato che non sono certo di essere nella giusta sezione.
In ogni caso chiedetemi riguardo ogni cosa che non vi è chiara.
Grazie in anticipo.
|
|

()
Newbie
    
Messaggi:
Iscritto:
|
Guarda che in .NET esiste già il modo per usare le porte seriali e comunque non credo che windows ti lasci chiamare il BIOS a tuo piacimento......... Se ti serve per forza l' assembly scrivi tutto in assembly non vedo il senso di fare un "mischiotto". Inoltre puoi emulare una porta seriale scrivendo un driver per windows ma comunque non sarà mai come avere fisicamente la porta seriale. Il " la porta simulata verrebbe riconosciuta da un linguaggio a basso livello come assembly" non ha alcun senso per me, dato che l' assembly non riconosce proprio niente in quanto non è una persona!
|
|

TheKaneB (Member)
Guru^2
    
Messaggi: 1792
Iscritto: 26/06/2009
|
Usare la porta seriale tramite int 14h è una cosa che funziona solamente sotto DOS(*).
Quando sei in Windows devi sfruttare le API di Windows, non si scappa.
(*) = A scanso di equivoci. Il DOS non è la schermata nera della riga di comando, quella è la Windows Console. Per DOS intendo il vecchio sistema operativo MS-DOS.
Ultima modifica effettuata da TheKaneB il 20/05/2013 alle 10:55 |
|

()
Newbie
    
Messaggi:
Iscritto:
|
eh immaginavo che non potessi fare quei riferimenti al BIOS in modalità protetta, ma non ero sicurissimo....... Come al solito TheKaneB si dimostra utile Comunque se non hai a disposizione una vera seriale devi scrivere un driver windows per emularla, usando qualche altro hardware al posto della porta seriale, quindi penserei all' USB anche se convertitori USB-seriale esistono già (e sono hardware).......
|
|

emanuele19956 (Normal User)
Newbie
    
Messaggi: 19
Iscritto: 19/05/2013
|
Vi spiego le ragioni del mischiotto, come diceva qualcuno...
A me per principio dà abbastanza fastidio essere costretto ad usare librerie chiuse di Windows per controllare l'hardware e di conseguenza non poterne capire il funzionamento.. e quindi pensavo ad usare un linguaggio "diretto", cioè l'assembly... E ho pensato di integrarlo inline col C++ perché alla fine vorrei che la porta fosse usabile tramite interfaccia grafica, e qui si crea il bisogno del visual basic...
Sicuri che non esiste un modo per chiamare il bios da windows?
|
|

()
Newbie
    
Messaggi:
Iscritto:
|
Allora se le ragioni sono di principio usa linux, e per l' interfaccia grafica esistono le Qt, usarle sarebbe una scelta migliore di fare un "mischiotto". Windows lavora in modalità protetta e quindi il BIOS non è raggiungibile, INOLTRE i tuoi programmi sono eseguiti sul ring3 quindi non hai privilegi di accesso all' hardware, se vuoi qualcosa più a basso livello, diciamo così, devi scrivere un driver e lavoreresti su ring0 (l' anello del kernel). Comunque credo seriamente che tu debba usare linux visto come stanno le cose.......
|
|

TheKaneB (Member)
Guru^2
    
Messaggi: 1792
Iscritto: 26/06/2009
|
Anche Linux gira in modalità protetta e non consente le chiamate al BIOS.
Al massimo dovresti usare DOS ( http://www.freedos.org/ )
|
|

()
Newbie
    
Messaggi:
Iscritto:
|
Si ma linux era per il fatto che volendo lui può sapere come viene gestita la seriale, anche se per capirlo......... ehm tanti auguri
|
|

emanuele19956 (Normal User)
Newbie
    
Messaggi: 19
Iscritto: 19/05/2013
|
Parlavo oggi col mio professore e siamo giunti alla stessa conclusione. Linux per capire, windows 95 per chiamare il bios. A quanto pare con win95 era ancora possibile.
|
|