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

 
 
> Ошибка при работе с WIP AT, Возникает ошибка при передаче данных с помощью TCP/IP стека
AlexKazmin
сообщение Nov 17 2010, 12:20
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 16-11-10
Пользователь №: 60 945



Есть терминал Fargo Maestro 100. В нём используется модем серии Q24. Используя встроенный TCP стек передаются бинарные данные на сервер. При передаче данных использую DLE стаффинг. т.е. перед каждой 03h добавляется 10h. Всё работает, но в один прекрасный момент на сервер приходит просто число 03h и происходит обрыв ТСР соединения, т.е. такая ситуация как будто 10h не добавлялась. Пробовал тестировать - передавал разное количество данных, просто 10h 03h, но какую то зависимость между тем когда модем проглатывает 10h и обрывает соединение определить не удалось.


Может кто-нибудь уже сталкивался с подобной проблемой?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
million68
сообщение Nov 19 2010, 06:53
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 9-03-07
Из: USSR
Пользователь №: 26 007



Datasheet говорит, что :
"In case a [DLE] character needs to be transmitted as data, it should be preceded by another [DLE] character."

Т.е. пропатчить нужно не только ETX, но и DLE:
Код
void USART_TransmitDLE( unsigned char data )
{
if(data==DLE || data==ETX) {
   while ( !( UCSR1A & (1<<UDRE1)) );      /* Wait for empty transmit buffer */
   UDR1=DLE;
}
while ( !( UCSR1A & (1<<UDRE1)) );      /* Wait for empty transmit buffer */
UDR1 = data;                            /* Put data into buffer, sends the data */
}
Go to the top of the page
 
+Quote Post



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

 


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


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