Modbus isteği

Başlatan robikod, 25 Aralık 2018, 16:06:54

robikod

Herkese merhaba,

linkteki kodları projemde kullanıyorum https://github.com/xukai871105/uip_freemodbus_tcp burada belirli bir yere kadar geldim. Ağ üzerindeki paketleri tarıyorum IP paketi geldiği zaman aşağıdaki kod bloğuna geliyorum ancak burada şöyle bir sorunum var uip_input fonksiyonu sonucu uip_len 0 dönüyor dolayısı ile IP paketi okuduktan sonra bir şey yapamıyorum.

uip_input aslında şu şekilde define edilmiş:
#define uip_input() uip_process(UIP_DATA)
UIP_DATA =1

Ve buradaki uip_process fonksiyonu ise şurada bulunuyor. https://github.com/xukai871105/uip_freemodbus_tcp/blob/ec4c025be32b5eb2beb229bd675bed5ab77617be/uIP-1.0/uip/uip.c

Bir modbus isteği olmadan çalıştırıyorum programı o yüzden mi return 0 dönüyor anlam veremedim.
Yardımcı olursanız sevinirim.

if (uip_len > 0)
        {
            // des_enc28_packetSend(ARP_req, 42);
            // serialprint("Buf = %d \n", BUF);
            // uint16_t a = BUF->type;
            // serialprint("type 0x%04x\n", a);
            // serialprint("htons %d \n", htons(UIP_ETHTYPE_IP));
            // uip_arp_arpin();
            Delay(100);
            // Delay(3);
            serialprint("Buf = %d \n", BUF);
            uint16_t a = BUF->type;
            serialprint("type 0x%04x\n", a);
            serialprint("htons %d \n", htons(UIP_ETHTYPE_IP));
            if (BUF->type == htons(UIP_ETHTYPE_IP))
            {
                GPIO_SetBits(GPIOE, GPIO_Pin_9);
                serialprint("IPPP PACKET !!!\n");
                Delay(500);
                uip_arp_ipin();
                uip_input();
                serialprint("tap_dev= %d\n", uip_len);
                Delay(300);

                if (uip_len > 0)
                {
                    uip_arp_out();
                    tapdev_send();
                }
            }
            else if (BUF->type == htons(UIP_ETHTYPE_ARP))
            {
                GPIO_SetBits(GPIOE, GPIO_Pin_9);
                serialprint("ARPP PACKET !!!");
                Delay(500);
                uip_arp_arpin();
                if (uip_len > 0)
                {
                    tapdev_send();
                }
            }
        }