-
作者帖子
-
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
钥匙大师Tutte 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.
再见
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
钥匙大师Sul 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. -
作者帖子
- 您必须登录才能回复这个主题.