[pso] [Tema2][Linux] Problema la receptia unui caracter in handler

Mihnea Donciu mihnea.donciu at gmail.com
Tue Apr 20 23:48:33 EEST 2010


Da, verific ce trimit la outb si e caracterul care trebuie.
De exemplu, daca trimit comanda echo -n "a" >> /dev/com1, apare asa:
com1: Inregistrat a in buffer, fill = 1    // aici sunt in functia write
com1: IIR c2 LSR 60 MSR bb         // am intrat in handler
com1: fill = 1
com1: T 97 (60)                                // se trimite caracterul 
ascii 97, adica a
com1: IIR c2 LSR 60 MSR b0
com1: fill = 0
com2: IIR cc LSR 61 MSR b0
com2: R 1 (61)                                 // primesc 1 in loc de 97 
pentru a

On 4/20/2010 10:10 PM, Andrei Voinescu wrote:
> Afișezi pe undeva și ce pui efectiv cu outb pe linie?
>
> Andrei
>
> 2010/4/20 Mihnea Donciu<mihnea.donciu at gmail.com>:
>    
>> Da, am incercat si cu unsigned char si cu char si tot asa da.
>>
>> On 4/20/2010 8:21 PM, Octavian Rinciog wrote:
>>      
>>> ch este unsigned char?
>>>
>>> În data de 20 aprilie 2010, 20:18, Mihnea Donciu
>>> <mihnea.donciu at gmail.com>    a scris:
>>>
>>>        
>>>> Am uitat sa precizez ca la initializarea modulului trimit caracterul
>>>> FIRST_CH (97 in ascii) pe portul com1 si ajunge cu bine pe com2:
>>>> com2: (IIR = cc) (LSR = 61) (MSR = b0)    // registrele de stare
>>>> com2: R 97 (61)
>>>>
>>>> On 4/20/2010 8:10 PM, Mihnea Donciu wrote:
>>>>
>>>>          
>>>>> Salut!
>>>>>
>>>>> Am o problema cand citesc la receptor in handler caracterul primit pe
>>>>> port
>>>>>   (ch = inb(data->base)), dupa ce il trimit tot in handler la
>>>>> transmitator
>>>>> (outb(ch, data->base)).
>>>>> De exemplu, daca trimit catre dispozitiv un sir prin echo -n
>>>>> "mama1234">>
>>>>> /dev/com1, pe com2 voi primi asa:
>>>>> com2: (IIR = cc) (LSR = 61) (MSR = b0)    // registrele de stare
>>>>> com2: R 13 (61)    // 13 in ascii pt m, cand m e 109 in ascii
>>>>> com2: R 1 (61)      // 1 in ascii pt a, cand a e 97 in ascii
>>>>> com2: R 13 (61)    // la fel pt m
>>>>> com2: R 1 (61)      // la fel pt a
>>>>> com2: R 17 (61)    // 17 in ascii pt 1, cand 1 in ascii e 49
>>>>> com2: R 18 (61)    // 18 in ascii pt 2, cand 2 in ascii e 50
>>>>> com2: R 19 (61)    // 19 in ascii pt 3, cand 3 in ascii e 51
>>>>> com2: R 20 (61)    // 20 in ascii pt 4, cand 4 in ascii e 52
>>>>>
>>>>> Deci pentru litere primesc un caracter aflat la un decalaj de 96 de
>>>>> unitati, iar pentru cifre rezulta un decalaj de 32.
>>>>> Ma poate ajuta cineva cu un sfat?
>>>>> Multumesc.
>>>>>
>>>>> Mihnea
>>>>>
>>>>>            
>>>> _______________________________________________
>>>> pso mailing list
>>>> pso at cursuri.cs.pub.ro
>>>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>>>
>>>>
>>>>          
>>>
>>>
>>>        
>> _______________________________________________
>> pso mailing list
>> pso at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>
>>      
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>    



More information about the pso mailing list