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

 
 
> Почему не работает чтение из буфера 2?, Из буфера 1 работает...
Димон Безпарольн...
сообщение Aug 7 2017, 08:03
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Написал код подстановки в функцию чтения из последовательного порта:

Код
int spwf_socket_read (unsigned char* i, int ch, int timeout)
{                                                //
    unsigned char *PacketPntr = NULL;            //
    static int PacketIDX = 0;                    //
    int dataLen = 0;                            //
    
    //printf("\nPacketType = %d:", PacketSwitch);//
    
    printf("\nAsking NByte = %d:", ch);            //

    if(PacketSwitch == 2)                        //
        {                                        //
            PacketPntr = CONNACK_P;                //
            printf("IDX = %d:", PacketPntr);    //
        }                                        //
        
    if(PacketSwitch == 9)                        //
        {                                        //
            PacketPntr = SUBACK_P;                //
            printf("IDX = %d:", PacketPntr);    //
        }                                        //
    while(1)                                    //
        {                                        //
            i[dataLen] = PacketPntr[PacketIDX++];//Кладем в буфер
            printf("%02x ", i[dataLen]);        //
            dataLen++;                            //
            if(dataLen >= ch) {break;}            //Если принято сколько сказано (int ch) - выход        
        }                                        //
    return dataLen;                                //
}                                                //

В первом случае (PacketSwitch == 2), код работает исправно. Во втором случае читаются нули:

Цитата
Connect to MQTT Brocker

Asking NByte = 1:IDX = 4235388:20
Asking NByte = 1:IDX = 4235388:02
Asking NByte = 2:IDX = 4235388:00 00
Connected with IBM MQTT broker
Subscribing topic: iot-2/cmd/rele/fmt/json
Asking NByte = 1:IDX = 4235392:00
Asking NByte = 1:IDX = 4235392:00
MQTTSubscribe. Timeout expired for suback reception


Массивы объявлены глобально. Можно и локально, будет то же самое.

Цитата
unsigned char CONNACK_P[4] = {0x20,0x02,0,0}; //
unsigned char SUBACK_P [4] = {0x90,0x03,0,0}; //


Сообщение отредактировал Димон Безпарольный - Aug 7 2017, 08:05
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
x893
сообщение Aug 7 2017, 17:46
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Сделать можно как угодно, но телепатия пока не доступна простым начинающим типа меня.
Как сейчас нарисовано, то конечно могут быть ошибки при выходе за границы.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Димон Безпарольный   Почему не работает чтение из буфера 2?   Aug 7 2017, 08:03
- - SSerge   Цитатаstatic int PacketIDX = 0; Зачем там static?   Aug 7 2017, 13:08
|- - Димон Безпарольный   Цитата(SSerge @ Aug 7 2017, 17:08) Зачем ...   Aug 7 2017, 14:17
|- - adnega   Цитата(Димон Безпарольный @ Aug 7 2017, 17...   Aug 7 2017, 14:35
|- - Димон Безпарольный   Цитата(adnega @ Aug 7 2017, 18:35) А кто ...   Aug 7 2017, 16:47
- - SSerge   Что эта функция вообще должна делать?   Aug 7 2017, 14:48
- - x893   static не нужен конечно Второй случай смотрите отл...   Aug 7 2017, 16:01
- - x893   Если static добавить, то работать будет неправильн...   Aug 7 2017, 17:35
|- - Димон Безпарольный   Цитата(x893 @ Aug 7 2017, 21:35) Если sta...   Aug 7 2017, 19:27
- - dm37   У вас всё работает так как вы и написали. Т.е. есл...   Aug 7 2017, 17:39
- - x893   Тогда логику надо изменить.   Aug 8 2017, 01:29
- - Kibi   Эм, а не проще ли switch(PacketIDX), просто как то...   Aug 8 2017, 13:32
|- - Димон Безпарольный   Цитата(Kibi @ Aug 8 2017, 17:32) Эм, а не...   Aug 8 2017, 14:19
- - x893   Я бы на этот вопрос "Почему не работает ... ?...   Aug 8 2017, 14:46


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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 20:48
Рейтинг@Mail.ru


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