RPI-uart komm med annan dator. Tips?

Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016

RPI-uart komm med annan dator. Tips?

Sitter med en RPI 3 och har anslutit den mot en touchskärm som ger ut data via RS232. Har en MAX232 mellan och leder in datat på uart-pinnarna på RPI:n.
skickar data fram och tillbaka. Det jag funderar på är hur RX-rutinen på RPI:n ska konfigurera och fungera? Tacksam för snippets, programkod etc. för jag är ganska newbee på seriekomm hos MCU:er. Har inte jobbat mycket med det.

Problemet som jag frågar om rör sända data från touchskärm till RPI:n.
Datat från skärmen är av känd storlek typ en unsigned long int. Mer behövs inte. I dagsläget har jag fått nöjet att SE korrekt data skickas från skärmen MEN C-rutinen (med read()) anropas i en loop och den spottar ur sig "skit". Sen trycker jag på en knapp på skärmen och den skickar ut sitt data och då ser jag på RPI:n skärm att rätt data rullar förbi. Sen fortsätter den att skriva spaces. Alltså, först "binärt strunt". Sen datat från skärmen. Sen spaces eller tabs eller nåt.
Observera, jag har bara gjort några snabba "fix" för att kunna SE att nåt sker vilket det också gjorde. (Då tog jag helg).
Jag vill ju givetvis ha mer koll på trafiken. Så jag undrar vilka konfigureringar jag ska titta på. Nåt jag läste i all hast var att uart:en väntade på radslutstecken. Lade då in \n\r. Då började datat komma över. Sen har jag läst om BLOCKING och NON_BLOCKING. Blocking i detta fall misstänker jag handlar om att datat som sänds har känd storlek? BLOCK handlar inte om att "blocka" nåt...
Jag använder read(fd, *buf, 255). Initiering består av fcntl() samt en config av speed m.h.a en struct jag inte minns namnet på. Jag misstänker att felet ligger i initieringen samt samarbetet med read(). Så har ni några tips eller kod så vore jag mäkta tacksam.

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Okt 2002

Hittade en artikel i ämnet som du kanske redan sett:
https://www.i-programmer.info/programming/cc/10027-serial-c-a...

Det kanske på något sätt går att vänta tills serieportens läsbuffer fyllts med data och först därefter läsa ut data från serieporten tills buffern är tom, sedan vänta på att något nytt ska hända med buffern. Så istället för att kontinuerligt läsa, bara läsa de tecken som kommit in. Möjligt att det redan är vad du gör i din loop.

Seriekommunikation är ofta krångligt tycker jag. Ett sätt kan vara att labba lite i en seriell terminal för att förstå hur prylen man ska prata med fungerar innan man skriver programmet.

Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016
Skrivet av ronnylov:

Hittade en artikel i ämnet som du kanske redan sett:
https://www.i-programmer.info/programming/cc/10027-serial-c-a...

Det kanske på något sätt går att vänta tills serieportens läsbuffer fyllts med data och först därefter läsa ut data från serieporten tills buffern är tom, sedan vänta på att något nytt ska hända med buffern. Så istället för att kontinuerligt läsa, bara läsa de tecken som kommit in. Möjligt att det redan är vad du gör i din loop.

Seriekommunikation är ofta krångligt tycker jag. Ett sätt kan vara att labba lite i en seriell terminal för att förstå hur prylen man ska prata med fungerar innan man skriver programmet.

Det var en bra länk. Som sagt, lite newbee inom uart-com är jag. Den förklarar mycket bra "självklara" saker som många Googlingar förutsätter att man redan vet. Alla länkar man "googlar" fram är spretiga för de berättar om olika vägar att nå samma mål och de förutsätter olika mängd av grundkunskap och terminologi.

Jag har labbat lite och fått komm att funka bra(?) men utan att riktigt veta varför den funkar bra. Vill gärna ha koll på grejerna men har inte tiden just nu. Måste fram med prototyp1 före ett visst datum.
Det jag gjort nu är lite "quick and dirty" men så länge funktionen är bra så den klarar en demonstration så får jag klara mig med detta. Jag ska dock läsa länken du skickade och blir det tid över så ska jag ge mig i kast med drivarna.