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

 
 
> Почему не работает чтение из буфера 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

Сообщений в этой теме
- Димон Безпарольный   Почему не работает чтение из буфера 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 7 2017, 17:46
- - 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 Текстовая версия Сейчас: 21st July 2025 - 10:12
Рейтинг@Mail.ru


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