Plotta data från com-porten (seriel) i realtid?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Plotta data från com-porten (seriel) i realtid?

Inlägg av jonte_s »

Hej.

Undrar om någon vet något gratis program där man kan plotta data som skickas från en microcontroller till serie-porten i realtid?

/J
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Definiera "plotta" !
Grafiskt ??
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

"Bray´s" terminalprogram har en enkel grafisk plotfunktion för inkommande bytes (0-255 på y-axeln alltså). Inkommande data skrivs också ut som ASCII, bin, hex och dec.
Gå till denna sida och sök efter termv19b.zip (direktlänk)
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Jag hittade inte plotfunktionen i terminal programmet.
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Tack för tipset oJsan, men jag hittar inte heller den funktionen... Får testa vidare när jag får mer tid.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Som jag misstänkte, det finns en nyare version av programmet men programskaparens sida är nere sedan en tid och jag länkade visst till en mirror där bara den gamla versionen fanns.
Jag tror jag har den nyare versionen på jobbet, lägger upp den om jag hittar den.

Edit: Whii, jag hittade den här hemma (finns en knapp i programmet som heter "Graph"): http://jojjas.mine.nu/misc/terminal/
jonte_s
Inlägg: 88
Blev medlem: 11 februari 2006, 17:13:48
Ort: Stockholm

Inlägg av jonte_s »

Fett schysst av dig! Tack.
Användarvisningsbild
PeterH
Inlägg: 8635
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Inlägg av PeterH »

Finns det nåt liknande för USB och parallellport också?

/PeterH
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Hur menar du med USB? Om USB emulerar en serieport så fungerar ju vilket terminalprogram som helst... att debugga rådata från USB ser jag inte vitsen med.
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Jag kör portmon från microsoft (gratis är den också). :-)


http://www.microsoft.com/technet/sysint ... rtmon.mspx
syltkaka
Inlägg: 188
Blev medlem: 9 december 2006, 18:55:09
Ort: Göteborg

Inlägg av syltkaka »

Jag har varit ute efter lite samma sak och funderade på att skriva något själv i tex Java men stödet för serieport i Java är dåligt och det kommer bli ganska krångligt bara för att få upp en plot och inte speciellt flexibelt.

Därför tänkte jag istället använda Matlab bland annat pga att det är bra på att fixa allt som har med numerisk matematik att göra och har bra stöd för serieportskommunikation. Det är ju egentligen ett helt programmeringsspråk det också och om jag inte läst fel så kan man få till enkla grafiska gränssnitt samt att programmen går att kompilera till exekverbara filer.

Bara ett litet tips om man kan lite Matlab. Själv använder jag det i mer eller mindre varje kurs på högskolan och tycker det passar bra att lära sig lite mer om det i egna tillämpningar.
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Själv har jag använt detta skript för att plota data från en AVR.

Kod: Markera allt

clc
clear data;

s1 = serial('COM1');                            %define serial port
s1.BaudRate=57600;                               %define baud rate

fopen(s1);    %open serial port

for i= 1 :1500                                   %acquisition of 100 points
    time(i)=toc;
    data(i,1)=str2double(fscanf((s1)));     %pos1
    data(i,2)=str2double(fscanf((s1)));     %setpoint

end
figure

 plot(data(:,1),'g');
 hold on
 plot(data(:,2),'r'); 
 xlabel('Pos1');

fclose(s1);                                     %close serial port

Jag har även tidigare gjort en realtidsplot som plotade data från en DSP. Men tyvärr har jag inte kvar koden.
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Jag roade mig med att fixa till ploten så den plotar i realtid.

M-scriptet

Kod: Markera allt

clc
clear data;

h = figure(1);
drawnow

xlim([0 1500])
ylim([0 1024])

 s1 = serial('COM1');                            %define serial port
 s1.BaudRate=57600;                               %define baud rate
 
 fopen(s1);    %open serial port
 

 for i= 1 :3000                                   %acquisition of 100 points

     data(i,1)=str2double(fscanf((s1)));     %pos1
     data(i,2)=str2double(fscanf((s1)));     %setpoint
     
     if(mod(i,10)==0)
         realtimeplot(h,i,data(i,1),data(i,2))
     end
   
 end

 fclose(s1);                                     %close serial port
Funktionen: realtimeplot

Kod: Markera allt

function realtimeplot(h,x,t,t2)

hold on
plot(x,t,'b',x,t2,'r')
if(x>1000)
    xlim([0+(x-1000) x+500])
end
drawnow
jenslager
Inlägg: 7
Blev medlem: 9 december 2007, 15:05:39
Ort: Umeå

Jag undrar om koden som använts

Inlägg av jenslager »

Jag använder en AT mega 16L.
Använder A/D omvandlaren. Jag läser ut värdet och skickar ut den på porten som ett tal (binärt). Har försökt använda ovanstående kod. Min fundering är om man behöver skicka ett Terminatortecken från microprocessorn. Mitt problem är att detta tecken (tex CR som är 13) kan krocka med det som läses ut från ad omvandlaren.

Jag är nyfiken på hur microdatorkoden ser ut som ni andra använt.
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Ja du, jag har använt BASCOM så jag slipper sådana bekymmer. Men jag använder 8 bitar, ingen "parity" bit, och 1 stop bit (8,N,1).

Lyckas du få läsa datan med ett annat terminalprogram?
Skriv svar