LibModbus kullanan var mı?

Başlatan EMP_Otto, 08 Ağustos 2014, 13:57:03

EMP_Otto

Merhaba arkadaslar Beaglebone Black üzerinde Libmodbus stackını kullanarak modbus server  geliştiriyorum.Gelen sorgunun hangi fonksiyonu gönderdiğini anlıyorum fakat hangi değer okuduğunu anlayamıyorum.Daha önce kullanan varsa yardımcı olursa cok sevinirim.


#include <errno.h>
#include "string.h"
#include <modbus.h>
int main(void)
{
    
reg_update();
    
int s;
    
modbus_t *ctx;
    
modbus_mapping_t *mb_mapping;
	
int header_length;
    
uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH];
    
int rc;
    
ctx modbus_new_tcp("192.168.1.21"1502);
    
//modbus_set_debug(ctx, TRUE); //debug kapali
    
header_length modbus_get_header_length(ctx);
    
mb_mapping modbus_mapping_new(00020);
    if (
mb_mapping == NULL) {
        
fprintf(stderr"Failed to allocate the mapping: %s\n",
                
modbus_strerror(errno));
        
modbus_free(ctx);
        return -
1;
    }

    
modbus_tcp_listen(ctx1);
    
modbus_tcp_accept(ctx, &s);

    for (;;)
	
{
        
rc modbus_receive(ctxquery);
        if (
rc 0
	
	
{
        }
	
	
else if (
rc == -1
	
	
{
         
//error
           
break;
        }
	
	
if(
query[header_length]==0x01)
	
	
{
	
	
printf("Read coil\n");
	
	
}
	
	
if (
query[header_length] == 0x03//holding register degerlerini gonder
	
	
{
	
	
 
printf("Read Hold REgister\n");
	
	
}
    }

    
printf("Quit the loop: %s\n"modbus_strerror(errno));

    if (
!= -1
	
{
        
close(s);
    }
    
modbus_mapping_free(mb_mapping);
    
modbus_close(ctx);
    
modbus_free(ctx);

    return 
0;
}
Bu işler zordur,özveri ister...