doctdevid Inserito: 26 maggio 2008 Segnala Share Inserito: 26 maggio 2008 Salve, c'è qualcuno che conosce un metodo per convertire un numero di 4 byte in float? Link al commento Condividi su altri siti More sharing options...
Renzo R. Inserita: 26 maggio 2008 Segnala Share Inserita: 26 maggio 2008 Non e' chiaro cosa intendi per un numero di 4 Byte:se e' un doppio intero con DTRse e' un BCD fai BTD per metterlo in doppio intero e DTR per metterlo in REAL o Virgola mobile.Ciao. Link al commento Condividi su altri siti More sharing options...
doctdevid Inserita: 26 maggio 2008 Autore Segnala Share Inserita: 26 maggio 2008 Probabilmente mi sono espresso male. Con vb.net, tramite lidnodave devo leggere e scrivere dei dati di tipo float da e verso db. Per quanto riguarda leggere byte o int non ho problemi, anche perchè stamattina ho preso dall'area download il programma in vb.net (fatto da Bruno) che fa praticamente quasi tutto: si connette, legge e scrive. Vorrei solo sapere come potrei fare a leggere e a scrivere numeri reali. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 26 maggio 2008 Segnala Share Inserita: 26 maggio 2008 Non dovresti convertere, dovresti solo associare un tipo di data, come l'Union sotto:union reg_32bits {float mw_32; char mb_32[4]; }; esempio: union reg_32bits m_FloatingValue; // variable declare m_FloatingValue.mb_32[0]; m_FloatingValue.mb_32[1]; m_FloatingValue.mb_32[2]; m_FloatingValue.mb_32[3]; m_FloatingValue.mw_32 Link al commento Condividi su altri siti More sharing options...
dago_ Inserita: 26 maggio 2008 Segnala Share Inserita: 26 maggio 2008 Imports System.Runtime.InteropServices <StructLayout(LayoutKind.Explicit)> Structure myFormato <FieldOffset(0)> Dim myReal As Single <FieldOffset(0)> Dim myDint As Int32 <FieldOffset(0)> Dim myInt As Int16 <FieldOffset(0)> Dim Byte4 As Byte <FieldOffset(1)> Dim Byte3 As Byte <FieldOffset(2)> Dim Byte2 As Byte <FieldOffset(3)> Dim Byte1 As Byte End Structure Function ByteToREAL(ByVal B1 As Byte, ByVal B2 As Byte, ByVal B3 As Byte, ByVal B4 As Byte, ByVal CifreDecimali As Short) Dim Valore As myFormato Valore.Byte1 = B1 Valore.Byte2 = B2 Valore.Byte3 = B3 Valore.Byte4 = B4 ByteToREAL = String.Format("{0:F" + CStr(CifreDecimali) + "}", Valore.myReal) End Function Link al commento Condividi su altri siti More sharing options...
doctdevid Inserita: 27 maggio 2008 Autore Segnala Share Inserita: 27 maggio 2008 Grazie tante per le risposte, per quanto riguarda il problema della lettura ho risolto. Ora mi è rimasto il problema della scrittura: leggo un numero reale, lo converto in bytes e lo passo al plc tramite la funzione apposita di libnodave; il problema però riguarda proprio la conversione. Ho usato la funzione BitConverter.GetsBytes(numero) ma il numero che vedo nel db non è quello letto. Link al commento Condividi su altri siti More sharing options...
doctdevid Inserita: 27 maggio 2008 Autore Segnala Share Inserita: 27 maggio 2008 leggendo le doc di libnodave esistono delle funzioni apposite per inserire un valore di tipo float, c'è qualcuno che l'ha già fatto? Link al commento Condividi su altri siti More sharing options...
doctdevid Inserita: 28 maggio 2008 Autore Segnala Share Inserita: 28 maggio 2008 Fatto. Dim sValue As Single Dim Value As Single Dim buf As Byte() = New Byte(myLen) {} Value = System.Convert.ToSingle(txtNewValue.Text) sValue = libnodave.toPLCfloat(Value) ConnPLC.WriteByteOnPLC(libnodave.daveDB, myNumDB, myStart, myLen, buf)Un ringraziamento a Bruno per l'esempio in vb.net su libnodave Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 28 maggio 2008 Segnala Share Inserita: 28 maggio 2008 Fatto. Si', ma...Vedi, l'esempio che ti ho postato Io ( certo, in C++) e' il massimo perche non c'e' nessuna funzione vincolata o trasformazione by code. E' una stuttura pura, e i dati si ricavano solo per corrispondenza, quindi il tempo di esecuzione sarebbe il piu' piccolo ever.Poi, se dovresti utilizzare per esempio 20000 tags del genere, non se ne parla ne anche. Link al commento Condividi su altri siti More sharing options...
Gianmario Pedrani Inserita: 22 agosto 2008 Segnala Share Inserita: 22 agosto 2008 Ciao ragazzi, ho provato la funzione Dim sValue As SingleDim Value As SingleDim buf As Byte() = New Byte(myLen) {}Value = System.Convert.ToSingle(txtNewValue.Text)sValue = libnodave.toPLCfloat(Value)ConnPLC.WriteByteOnPLC(libnodave.daveDB, 1,84,4,BitConverter.GetBytes(svalue))quella consigliata da bruno, ma ho mi sfugge qualcosa, perchè non mi funziona.. la dll e la 0.8.4.4 sto utilizzando #develop grazie a tutti ciao Link al commento Condividi su altri siti More sharing options...
Gianmario Pedrani Inserita: 23 agosto 2008 Segnala Share Inserita: 23 agosto 2008 Ho risolto, ho dovuto creare una funzione che girasse i byte, praticamente ho fatto cosi, Dim sValue As SingleDim Value As SingleDim buf As Byte() = New Byte(myLen) {}Value = System.Convert.ToSingle(txtNewValue.Text)sValue = libnodave.toPLCfloat(Value)buf = BitConverter.GetBytes(svalue)poi ho girato i vari byte di buf e li ho passati alla funzione ConnPLC.WriteByteOnPLC(libnodave.daveDB, 1,84,4,buf)cosi sono riuscito a scrivere i valori in virgila mobile.. pensavo che la funzione libnodave.toPLCfloat(Value) facesse già lei la rotazione dei byte Link al commento Condividi su altri siti More sharing options...
borinid Inserita: 27 gennaio 2009 Segnala Share Inserita: 27 gennaio 2009 Grazie Savino, il tuo metodo per convertire 4 byte in un float è semplicemente perfetto!!! Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 27 gennaio 2009 Segnala Share Inserita: 27 gennaio 2009 (modificato) Grazie Savino, il tuo metodo per convertire 4 byte in un float è semplicemente perfetto!!!Of Course!! Vedi, queste righe di codice non li trovi da nessuna parti, e neanche sui migliore libri Ti ringrazio per il tuo apprezzamento,!! per me e' stato semplicemente un piacere Modificato: 27 gennaio 2009 da Savino Link al commento Condividi su altri siti More sharing options...
aleto83imp Inserita: 3 settembre 2009 Segnala Share Inserita: 3 settembre 2009 Mi è venuto un dubbio (forse stupido)maSto facendo l'impianto di casa, ed ho scelto come sezioni 4 mm2 per dorsali principali, 2,5 per le prese e 1,5 prese .Ora mi chiedo la terra la devo riportare con la stessa sezione dei vari tratti? o devo usare il 4mm2 anche quando la fase è 2,5(non penso che sia così).Inoltre una volta che passato la terra in casa come faccio arrivare la terra fino in cantina dove c'è il collettore, di solito come si porta?Grazie Link al commento Condividi su altri siti More sharing options...
Lucky67 Inserita: 3 settembre 2009 Segnala Share Inserita: 3 settembre 2009 Fino a 16 mmq la sezione del conduttore di protezione deve essere uguale a quello delle fasi. Link al commento Condividi su altri siti More sharing options...
marco battilana Inserita: 5 settembre 2009 Segnala Share Inserita: 5 settembre 2009 Io di solito la porto in wi-fi... Link al commento Condividi su altri siti More sharing options...
aleto83imp Inserita: 6 settembre 2009 Segnala Share Inserita: 6 settembre 2009 (modificato) ahhhhh Veramente, nel senso che non so come farla arrivare al collettore in cantina. Come faccio a capire il passaggio(dietro il contatore presente in casa c'è tipo un cavedio ma non so dovew arriva e dove lo farò uscire il cavo). Modificato: 6 settembre 2009 da aleto83imp Link al commento Condividi su altri siti More sharing options...
Carlo Albinoni Inserita: 7 settembre 2009 Segnala Share Inserita: 7 settembre 2009 Fino a 16 mmq la sezione del conduttore di protezione deve essere uguale a quello delle fasi.In realtà potrebbe essere anche molto meno se.... si facessero i conti.La "sezione convenzionale" è stata introdotta proprio per non fare i conti. Link al commento Condividi su altri siti More sharing options...
aleto83imp Inserita: 7 settembre 2009 Segnala Share Inserita: 7 settembre 2009 Ho notato che non c'è un cavedio è solo un intercapedine .Ora per far arrivare in cantina la terra immagino che dovrò farla passaree nel tubo con i cavi che dal contatore alimentano la mia cantina (è un condominio); il problema è che non so dove arriva il tubo.Dovrei postare delle fotoGrazie Link al commento Condividi su altri siti More sharing options...
elettrorail Inserita: 31 agosto 2010 Segnala Share Inserita: 31 agosto 2010 Salve a tutti, ancho sto avendo problemi ma sono poco pratico in programmazione- Innanzitutto: c'è un modo per convertire i 4 byte in Visual ? Senza usare il c++ intendo- Secondo: cosa si intende per "girare i byte" ?Grazie in anticipo per le risposte Link al commento Condividi su altri siti More sharing options...
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