walterword Inserito: 26 febbraio 2006 Segnala Inserito: 26 febbraio 2006 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
Savino Inserita: 26 febbraio 2006 Segnala Inserita: 26 febbraio 2006 (modificato) 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: 26 febbraio 2006 da Savino
walterword Inserita: 27 febbraio 2006 Autore Segnala Inserita: 27 febbraio 2006 interessante la tua idea savinopero 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 potershiftare di 8 bit e nemmeno creare maschere and per estrapolare i 2 byte e metterli in or nell0intero finaleallora 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 -pcf8574pic18f452-pcf8574 o altri In sostanza il sistema che voglio creare sarebbe cosi :Rabbit ---- PC'sRabbit ---- PICxxxPICxxx ---- 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 viaSolo che il tempo e' tiranno e tra pochi gg dovro ripartire Ma a tempo eprso qualcosina la metto giu ciao
Livio Orsini Inserita: 27 febbraio 2006 Segnala Inserita: 27 febbraio 2006 Ciao Walter. Vedo che hai tolto la polvere e le ragnatele dal "Rabbit" Mi fa piacere.
walterword Inserita: 27 febbraio 2006 Autore Segnala Inserita: 27 febbraio 2006 il problema e' che tra pochi gg .(1 settimana) dovro rimetterle le ragnatele
walterword Inserita: 28 febbraio 2006 Autore Segnala Inserita: 28 febbraio 2006 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'applicazionevc#e' una bella lotta , sto provando con tutti gli oggetti del .net framework non riesco a capire....
walterword Inserita: 28 febbraio 2006 Autore Segnala Inserita: 28 febbraio 2006 ok la connessione e' riuscita dal pc spedisco una stringa e il rabbit la visualizza su stdio e poi la riscrive al pc tale e quale
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora