-
লেখকপোস্ট
-
10 নভেম্বর 2022 এ 16:28 #24424
cpiga
অংশগ্রাহকAvete idea se sia possibile acquisire l’input di un sismografo theremino a 3 canale su Matlab? Non riesco a trovare esempi di codice per capire come iniziare ad affrintare il problema.
Grazie anticipatamente a chiunque mi voglia dare una mano.
গ্রিটিংস
Carlo10 নভেম্বর 2022 এ 16:45 #24426theremino
KeymasterTutte le applicazioni thereminiche scrivono i valori negli Slot, quindi anche il sismografo lo fa.
Gli Slot sono valori Float (4 সংবাদের একক) nel file mappato in memoria che si chiama “Theremino1”
আমি “Memory mapped file” sono file del sistema Windows e tutte le loro particolarità sono ben spiegate da Microsoft.Per cui a questo punto il problema non è tanto nostro (del sistema theremino) ma di Mathlab.
Se MathLab può leggere i MemoryMappedFile di Windows allora sei a posto.
Se non li può leggere allora noi non possiamo fare nulla per aiutarlo.Mi spiace ma non so dirti altro su MathLab, noi utilizziamo solo applicazioni OpenSource e MathLab non lo è.
10 নভেম্বর 2022 এ 16:55 #24428cpiga
অংশগ্রাহকMatlab supporta i MemoryMappedFile.
I valori float come sono ordinati nel file? Sequenzialmente dallo slot 1 উপর? Potrei scrivere una serie di funzioni (da condividere) per rendere più pulito e ordinato il lavoro…
ঠিক আছে, Matlab non è opensource ma esistono cloni opensource che possono condividere il codice (octave).
Quindi se ho capito bene.
Leggo i primi 4byte del mapped file ed ho il segnale sullo slot1.
Leggo i secondi 4 byte del mapped file ed ho il segnale sullo slot 2.
Leggo i terzi 4 byte del mapped file ed ho il segnale sullo slot 3,
Grazie mille per il sostegno.
Ciao
Carlo10 নভেম্বর 2022 এ 16:57 #24430cpiga
অংশগ্রাহকUn’altra cosa… ma il file “theremino1” dove lo trovo nel file system?
10 নভেম্বর 2022 এ 18:13 #24432cpiga
অংশগ্রাহকMi sembra di aver capito che “Theremino1” sia un non-persistent memory mapped file. Quindi non corrisponde ad uno specifico file nel file system. Matlab invece supporta solo i persistent memory mapped file. Quindi l’unica soluzione che mi viene in mente è scrivere un piccolo software in c# che acceda al non-persistent memory mapped file e lo copi su un persistent memory mapped file sul file sytem in un loop infinito a cui accede Matlab.
Altri suggerimenti su altre, più eleganti, soluzioni sono graditi…
হ্যালো সবাই10 নভেম্বর 2022 এ 19:22 #24434cpiga
অংশগ্রাহকHo scritto questo ma non sembra funzionare:
using System; using System.IO; using System.IO.MemoryMappedFiles; using System.Threading; class Program { // Process B: static void Main(string[] args) { try { using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("Theremino1")) { var mmf_persistent = MemoryMappedFile.CreateFromFile(@"Theremino1_persist", FileMode.Open); while (true) { mmf_persistent = mmf; } } } catch (FileNotFoundException) { Console.WriteLine("Memory-mapped file does not exist. Run HAL first."); } } }Qualche suggerimento per metterlo apposto?
10 নভেম্বর 2022 এ 19:57 #24437cpiga
অংশগ্রাহকQuesta un’altra versione:
using System; using System.IO; using System.IO.MemoryMappedFiles; using System.Threading; class Program { // Process B: static void Main(string[] args) { try { using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("Theremino1")) { var mmf_persistent = MemoryMappedFile.CreateFromFile(@"Theremino1_persist", FileMode.Open, "Thermino1_persist"); byte[] buffer = new byte[4000]; int bytesRead; using (MemoryMappedViewStream stream_persist = mmf.CreateViewStream()) { BinaryWriter writer = new BinaryWriter(stream_persist); using (MemoryMappedViewStream stream = mmf_persistent.CreateViewStream()) { BinaryReader reader = new BinaryReader(stream); while (true) { bytesRead = reader.Read(buffer, 0, buffer.Length); writer.Write(buffer, 0, bytesRead); } } } } } catch (FileNotFoundException) { Console.WriteLine("Memory-mapped file does not exist. Run HAL first."); } } }Ma Matlab vede sempre e solo il contenuto del file di zeri che ho scritto sul file system….
10 নভেম্বর 2022 এ 21:27 #24439theremino
KeymasterSul nostro sito abbiamo pubblicato molti esempi di lettura e scrittura dei MemoryMappedFile in vari linguaggi tra cui anche il C++
Li trovi qui:
https://www.theremino.com/downloads/foundations#easyslotE anche qui:
https://www.theremino.com/downloads/foundations#mmfMa c’è anche un’altra cosa che devi considerare:
1) I MemoryMappedFile cui accedono le app a 32 bit non sono gli stessi a cui accedono la app s 64 বিট (casini di Windows e di SysWow64 ecc…)
2) Noi dobbiamo fare tutte le nostre applicazioni a 32 bit altrimenti dovremmo darle in due versioni, ma peggio ancora nessuno con i tablet e i mini pc potrebbe usarle.
3) Di conseguenza la tua app devi compilarla a 32 bit altrimenti non vede i MMF giusti, se li crea lei al volo e legge solo zeri. -
লেখকপোস্ট
- আপনি এই বিষয়ে উত্তর দিতে লগ ইন করতে হবে.