Уважаемые односельчане, небольшой вопрос с новой для меня технологие uIP и ProtoThreads. Я начал работать с оценочным китом AT91SAM9263EK. Я использую basic-emac-uip-helloworld-project как прототип моей системы. Система работает как приемник данных от нескольких антен, используя интернет (с различными IP и портами). Пример довольно полехный, хотя и довольно замороченый. Я отредактировал определение прикладной программы uIP. #ifndef UIP_APPCALL #define UIP_APPCALL receive_data_appcall #endif /* UIP_APPCALL */ Теперь она может опращивать несколько IP. И вданный момент я легко нахожу момент посылки данных главному контроллеру при помощи фкнуий uip_newdata() и uip_rexmit(). После этого я пытаюсь достать данные из посылки и послать на PC (с целью отладки). На стороне PC я слушаю порт с помощью Гипертерминала. Сама посылка часть реализована в примере с помощью protosockets и protothreads. Вот пример программного кода:
struct RF_board_data *rf = &(uip_conn->appstate);
if(uip_newdata()||uip_rexmit()) { PSOCK_INIT(&rf->p, rf->inputbuffer, sizeof(rf->inputbuffer)); handle_newdata(rf); }
static int handle_newdata(struct RF_board_data *rf) { PSOCK_BEGIN(&rf->p); PSOCK_READTO(&rf->p, '\n'); strncpy(rf->name, rf->inputbuffer, sizeof(rf->name)); printf(" rf->name = \n\r", rf->name); PSOCK_SEND_STR(&rf->p, "Hello "); PSOCK_CLOSE(&rf->p); PSOCK_END(&rf->p); }
Код должен копировать полученный буфер и послать его обратно в COM-порт и TCP/IP. Но данные не возвращаются. Собственно ничего не возвращается. Пожалуйста помогите. В чем ошибка?
|