реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> W3100A, Обмен по нескольким каналам
Swed
сообщение Jul 24 2006, 15:24
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-06-06
Пользователь №: 18 405



Проблема в следующем:

Не работает обмен по нескольким каналам.

По одному каналу работает нормально но при попытке обмена по несколькиим каналам начинает неправильно считатся длина принятого сообщения.
Go to the top of the page
 
+Quote Post
subver
сообщение Jul 25 2006, 02:16
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата(Swed @ Jul 24 2006, 22:24) *
Проблема в следующем:

Не работает обмен по нескольким каналам.

По одному каналу работает нормально но при попытке обмена по несколькиим каналам начинает неправильно считатся длина принятого сообщения.


Хм. код в студию?
У меня нормально все.
Go to the top of the page
 
+Quote Post
Swed
сообщение Jul 25 2006, 07:42
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 27-06-06
Пользователь №: 18 405



Процедура приема:

TCP_Resive proc far
TCPRC_Socket = word ptr [bp + 6]
TCPRC_AdrBuf = dword ptr [bp + 8]
TCPRC_LenBuf = word ptr [bp + 12]
TCPRC_AdrRd = dword ptr [bp - 4]
TCPRC_LenRd = word ptr [bp - 6]
enter 4 + 2, 0
push ds es
pushad ; bx cx dx edi esi
mov bx, TCPRC_Socket
shl bx, 1
mov TCPRC_LenRd, 0
mov dx, cs:TCP_TblReg_SRW_PR[bx]
in al, dx

push cx
mov cx, 5
loop $
pop cx
mov dx, cs:TCP_TblReg_RW_PR[bx]
in ax, dx
xchg ah, al
mov si, ax
shl esi, 16
add dx, 2
in ax, dx
xchg ah, al
mov si, ax
mov dx, cs:TCP_TblReg_SRR_PR[bx]
in al, dx
push cx
mov cx, 5
loop $
pop cx

mov dx, cs:TCP_TblReg_RR_PR[bx]
in ax, dx
xchg ah, al
mov di, ax
shl edi, 16
add dx, 2
in ax, dx
xchg ah, al
mov di, ax
mov ss:[110h], esi
mov ss:[114h], edi

mov TCPRC_AdrRd, edi
cmp esi, edi
jae TRc_Sub
add edi, 800h ; 2Ÿ
sub edi, esi
mov esi, edi
jmp TRc_Read
TRc_Sub:
sub esi, edi
TRc_Read:
or si, si
jz TCPRC_Ret
cmp si, TCPRC_LenBuf
jb TCPRC_Ret
mov cx, si
mov TCPRC_LenRd, si
les di, TCPRC_AdrBuf
mov ax, word ptr TCPRC_AdrRd
TRc_Rd:
mov dx, ax
and dx, 07FFh
add dx, cs:TCP_TblReg_RcBufAdr[bx]
insb
inc ax
loop TRc_Rd
add esi, TCPRC_AdrRd
mov ax, si
xchg ah, al
mov dx, cs:TCP_TblReg_RR_PR[bx]
add dx, 2
out dx, ax
shr esi, 16
mov ax, si
xchg ah, al
sub dx, 2
out dx, ax
TCPRC_Ret:
popad
mov ax, TCPRC_LenRd
;pop esi edi dx cx bx
pop es ds
leave
ret 2 + 4 + 2
TCP_Resive endp

В обработке прерывания стоит вызов функции которая принимает сообщение и транслиркет его обратно.

Используя утилиту AX1 тесирую прием и передачу. При включении второго канала начинаются траблы.
Go to the top of the page
 
+Quote Post
Swed
сообщение Aug 17 2006, 11:54
Сообщение #4





Группа: Новичок
Сообщений: 6
Регистрация: 27-06-06
Пользователь №: 18 405



Усе решил проблему ...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 02:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016