Reading from COM port for 2 days
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hello everyone,
I have an instrument which continuously sends data over serial port (I use an USB to TTL) with baud rate 460800. Currently I can capture its data for about 6 hours (the target PC has 4GB of ram). This period of time doesn't satisfy my requirement. I'm tring to read from serial port for 2 days (or more). Perhaps this limition is because of the amount of system's ram. Is there any way to save data directly to the hard disk to eliminate this limition?
This is my code. The code suppose to infinitely read from serial port util the USB to TTL get upluged. 
    packet_length = 816;
    numT = 100000
    rawData1D = zeros(1, numT * packet_length);
    s = serial('COM22','BaudRate',460800,'timeout', 10);
    s.InputBufferSize = 242400000;
    fopen(s);
    C = 1;
    a = 0;
    while 1
        a = fread(s,packet_length);
        if size(a,1) < packet_length
            break;
        end
        rawData1D(packet_length * C + 1: packet_length * (C + 1)) = a;
        C = C + 1
    end
    fclose(s);
Thanks for your suggestion.
0 Commenti
Risposte (1)
  chrisw23
      
 il 28 Nov 2022
        I suggest to use event based communication. Reading a fixed packet length may lead to a buffer over-/underrun due to asynchronous write and read operations.
read this Serial Events
0 Commenti
Vedere anche
Categorie
				Scopri di più su C Shared Library Integration in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

