Vai al contenuto
PLC Forum


Rabbit Tcp/ip - Conversione da int a char


walterword

Messaggi consigliati

sto facendo delle prove con rabbit 3010 e Dynamic C 8.61

la parte windows e' in vb6 e piu avanti c#

Dal pc spedisco un buffer di caratteri , il Rabbit li riceve tranquillamente

e poi spedisce una stringa .

Pero io vorrei spedire dal rabbit una stringa che sia un array di interi

Mi spiego meglio

int dati[100];

char buffer [512];

char *buf1;

char *buf2;

....

...

....

sock_puts(&s, buffer);

finche si tratta si spedire caratteri tutto ok ma

come potrei convertire i miei 100 interi in 200 caratteri ?

ho provato con la funzione di libreria "itoa" per spedire un intero

Mi accontento di spedire un intero ed ho provato cosi , ma non arriva niente

*buf1=itoa(dati[0],&buf2);

....

sock_puts(&s, dati[0]);

dall'altra parte arriva qualcosa tipo 7-8 caratteri ovviamente indecifrabili

cosa mi consigliate di fare ?

Vorrei iniziare ad implementare una libreria modbus su tcp/ip per rabbit come server

ciao

walter

Link al commento
Condividi su altri siti


Salve walterword,

Prova a fare una union tra una int(signed int) e due char.

//Questo va sul file .H :
union Word_16bits      // definizione della struttura
{signed int W_16;
char B_8[2];
};

 union Word_16bits m_DB1[512];    // costruzione oggetto m_DB1 con 512 words: [ 0- 511]

//Questo va sul file d'implementazione:

 for(int  k=0;k<511;k++){m_DB1[k].W_16=0;}   // azzeramento alla inizilizzazione
 m_DB1[512].W_16='\0';
....

/*-------------------------------------------------------
 m_DB1[0].W_16        indirizzamento word
 m_DB1[0].B_8[0]      indirizzamento byte basso
 m_DB1[0].B_8[1]      indirizzamento byte alto
-------------------------------------------------------*/
esempi caricamento dati:
...
m_DB1[0].W_16= +14641;   // decimal 
m_DB1[0].W_16= 0x3931;   // hex.

m_DB1[0].B_8[0] =0x31;     // hex.
m_DB1[0].B_8[1] =0x39;

m_DB1[0].B_8[0] ='1';      // ASCII
m_DB1[0].B_8[1] ='9';
....

Saluti.

Modificato: da Savino
Link al commento
Condividi su altri siti

interessante la tua idea savino

pero ho provato a fare cosi'

inizializzo le mie variabili

for(i=0;i<256;i++)

{

dati=(i+1)*2;

}

dati[0]=30000;

poi uso questa funzione

sock_write(&s,(byte *)&dati[0],512);

alla quale passo il puntatore del socket , e faccio il casting dei miei dati

in byte

Dall'altra parte , nel visual basic mi arrivano 512 byte

Ho provato a controllare il primo byte ed il secondo per vedere se il primo dato (dati[0])

mi ritorna 30000.

Ebbene controllando, con la calcolatrice di windows , i due bytes mi arrivano giusti

e "insieme" mi danno il mio valore

La cosa che mi blocca e' che visual basic non ha a disposizione funzioni per poter

shiftare di 8 bit e nemmeno creare maschere and per estrapolare

i 2 byte e metterli in or nell0intero finale

allora sto iniziando a vedere col c# che e' ben nutrito di metodi per strighe e

quant'altro , solo che pero sto avendo dei problemi sulla connessione

utilizzando gli oggetti tcpclient e NetworkStream .

Adesso provo con i socket .

ciao e grazie

La mia idea sarebbe quella di implementare una libreria modbus tcp/ip sul rabbit

La stessa cosa l'ho fatta con c# e con 2 pc (client e server )

Se riesco a farla anche su rabbit potrei avere tra le mani un'interessante

strumento che mi permettera di fare un sacco di belle cose

Il rabbit poi sara anche master di una rete RS485 composta da pic16f876 -pcf8574

pic18f452-pcf8574 o altri

In sostanza il sistema che voglio creare sarebbe cosi :

Rabbit ---- PC's

Rabbit ---- PICxxx

PICxxx ---- PCF8574

Sto vedendo di mettere giu anche un configuratore hw tramite il quale configurare la rete ,

dare gli indirizzi , salvarli in eeprom dei micro e via

Solo che il tempo e' tiranno e tra pochi gg dovro ripartire

Ma a tempo eprso qualcosina la metto giu

ciao

Link al commento
Condividi su altri siti

con c# riesco a connettere il pc al rabbit dopo alcuni secondi

poi invio una stringa e il rabbit non la riceve finche non esco dall'applicazione

vc#

e' una bella lotta , sto provando con tutti gli oggetti del .net framework

non riesco a capire....

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...