Transmitere fisier prin interfata seriala
Transmitere fisier prin interfata seriala
Hello all,
Simplu sec si sincer: "Se poate transmite un fisier pe interfata seriala? Adica, dintr-un program in Visual c++ sa iau un fisier pe care sa-l trimit pe interfata seriala."
Daca se poate acest lucru, va rog sa imi da-ti cateva indicii.
Mersi fain.
Cu bine,
Alin POPA
Simplu sec si sincer: "Se poate transmite un fisier pe interfata seriala? Adica, dintr-un program in Visual c++ sa iau un fisier pe care sa-l trimit pe interfata seriala."
Daca se poate acest lucru, va rog sa imi da-ti cateva indicii.
Mersi fain.
Cu bine,
Alin POPA
Great minds disscuss ideas, average minds disscuss events, small minds disscuss people.
-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Transmitere fisier prin interfata seriala
Da, se poate.
1. citesti fisierul ( vezi MSDN, google)
2. trimiti octetii fisierului pe interfata seriala ( vezi MSDN, google)
1. citesti fisierul ( vezi MSDN, google)
2. trimiti octetii fisierului pe interfata seriala ( vezi MSDN, google)
Re: Transmitere fisier prin interfata seriala
Cred că se poate, dacă ne inspirăm din surse ca de exemplu:
şi altele.
şi altele.
Re: Transmitere fisier prin interfata seriala
In Win chiar folosesti CreateFile sa deschizi seriala, adica ea e tratata banalizat ca un soi mai ketz de feser
. Pe la iteratia 2 de program recomand sa muti opertiile cu seriala pe un alt thread.

-
- Membru++
- Posts: 919
- Joined: 23 Jul 2007, 11:32
Re: Transmitere fisier prin interfata seriala
La capitolul alternative sau componente ce inglobeaza multe aspecte in lucrul cu portul serial, mai putem enumera: control ActiveX facut de MS http://msdn.microsoft.com/en-us/library ... S.60).aspx sau cel din .NET folosind C++/CLI http://msdn.microsoft.com/en-us/library ... lport.aspx
Re: Transmitere fisier prin interfata seriala
Ciao Dragos,Dragos Cojocari wrote:Da, se poate.
1. citesti fisierul ( vezi MSDN, google)
2. trimiti octetii fisierului pe interfata seriala ( vezi MSDN, google)
Cand spui sa citesc fisierul, asta inseamna sa citesc cate un octet ( 8 biti ) si apoi sa ii trimit pe seriala si tot asa pana la sfarsitul fisierului? Sau cum trebuie citit acel fisier?
Mersi fain.
Great minds disscuss ideas, average minds disscuss events, small minds disscuss people.
- Silviu Ardelean
- Senior
- Posts: 1175
- Joined: 12 Jul 2007, 09:22
- Contact:
Re: Transmitere fisier prin interfata seriala
Ma bag si eu in discutzie si propun citirea o singura data a fisierului si salvarea sa intr-un buffer. Ulterior, trimitzi din acest buffer octet cu octet pe serial.
In plus, recomand ca aceste operatii sa se efectueze intr-un thread separat.
In plus, recomand ca aceste operatii sa se efectueze intr-un thread separat.
-
- Membru++
- Posts: 919
- Joined: 23 Jul 2007, 11:32
Re: Transmitere fisier prin interfata seriala
De ce "octet cu octet" ?Silviu Ardelean wrote:trimitzi din acest buffer octet cu octet pe serial
Trimiti cati octeti vrei, ca se ocupa Windows-ul de serializare... Eu am lucrat cu acele componente mai sus amintite si transmiteam buffer-e mari iar in MSDN WriteFile nu am vazut sa aiba limitare ! Doar nu suntem la microcontrolere unde resursele sunt limitate...
- Silviu Ardelean
- Senior
- Posts: 1175
- Joined: 12 Jul 2007, 09:22
- Contact:
Re: Transmitere fisier prin interfata seriala
Intr-adevar Windows-ul a evoluat si pe partea asta. Dar, de unde stii ca poate Alin nu lucreaza chiar cu micro-controlere? WriteFile are limita de 65,535 bytes pentru operatii de scriere prin retea.neagu_laurentiu wrote:De ce "octet cu octet" ?Silviu Ardelean wrote:trimitzi din acest buffer octet cu octet pe serial
Trimiti cati octeti vrei, ca se ocupa Windows-ul de serializare... Eu am lucrat cu acele componente mai sus amintite si transmiteam buffer-e mari iar in MSDN WriteFile nu am vazut sa aiba limitare ! Doar nu suntem la microcontrolere unde resursele sunt limitate...

Last edited by Silviu Ardelean on 22 Jul 2008, 12:53, edited 1 time in total.
Re: Transmitere fisier prin interfata seriala
Interesanta ideea ta Silviu, dar pentru a citi din fisier folosesc functia MFC f.Read(chBuff, nCount), unde chBuff este declarat char chBuff[xxxx] iar nCount intradevar poate fi inlocuit cu f.GetLength().Silviu Ardelean wrote:Ma bag si eu in discutzie si propun citirea o singura data a fisierului si salvarea sa intr-un buffer. Ulterior, trimitzi din acest buffer octet cu octet pe serial.
In plus, recomand ca aceste operatii sa se efectueze intr-un thread separat.
Problema care o vad eu aici este: "Ce se intampla atunci cand fisierul este foarte mare si tipul char nu este capabil sa retina toate informatiile?"
Mersic.
O zi faina
Great minds disscuss ideas, average minds disscuss events, small minds disscuss people.
- Silviu Ardelean
- Senior
- Posts: 1175
- Joined: 12 Jul 2007, 09:22
- Contact:
Re: Transmitere fisier prin interfata seriala
Alin, daca estimezi ca fisierele ce le trimitzi pe serial vor fi de dimensiuni f. mari (de la zece de mega in sus) atunci potzi lua "calupuri de date" din fisier si sa le pui in buffer. Dupa terminarea unei bucatzi de fisier, citesti de unde ai ramas si pui in bufferul tau.Popa Alin wrote: Problema care o vad eu aici este: "Ce se intampla atunci cand fisierul este foarte mare si tipul char nu este capabil sa retina toate informatiile?"
Spor si o zi faina si tie!

-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Transmitere fisier prin interfata seriala
Asta si e premiza de la care trebuie sa pleci. Nu incerca sa tii totul in memorie din mai multe motive:Popa Alin wrote:Interesanta ideea ta Silviu, dar pentru a citi din fisier folosesc functia MFC f.Read(chBuff, nCount), unde chBuff este declarat char chBuff[xxxx] iar nCount intradevar poate fi inlocuit cu f.GetLength().Silviu Ardelean wrote:Ma bag si eu in discutzie si propun citirea o singura data a fisierului si salvarea sa intr-un buffer. Ulterior, trimitzi din acest buffer octet cu octet pe serial.
In plus, recomand ca aceste operatii sa se efectueze intr-un thread separat.
Problema care o vad eu aici este: "Ce se intampla atunci cand fisierul este foarte mare si tipul char nu este capabil sa retina toate informatiile?"
Mersic.
O zi faina
0. memoria nu e o chestie magica cu 7 vieti. mai devreme sau mai tarziu se gata.
1. nu castigi nimic - portul serial va trimite informatia la fel de incet
2. irosesti inutil o resursa importanta a sistemului, memoria
3. se consuma timp pentru citirea intregului fisier chiar daca e posibil ca transmisia sa fie intrerupta dupa primul octet trimis