Volop terug in de software.
Mijn rotorbesturing werkt tot volle tevredenheid, maar er zijn nog twee probleemkes die ik opgelost wil zien :
1. De afhandeling van de TCP verbinding bij afsluiten .
2. Tijdens de rotorsturing kan ik niet de actuele positie terugsturen via TCP , dit komt omdat alles zich maar in één draadje ( thread) afspeelt , namelijk in de main.
Dus , ik ben nu aan de studie voor multithreading onder C .
Dit lukt aardig op mijn Intel/AMD machine voor een simpel programmaatje maar de RPI heeft een ARM processor en ik wist niet of er een library is voor die processor.
Na wat gezoek ( er is niet zoveel te vinden over multithreading met de RPI 4)
heb ik gevonden welke lib ik moet installeren in de RPI:
sudo apt-get install libpthread-stubs0-dev
Dankzij :https://gist.github.com/pvrego/7fd2610d0bf5ca063e63db6ab776e89c
Wat ge dan nog moet doen , is bij het compileren de volgende parameter meegeven in de syntax:
gcc -Wall -c -pthread "%f". ( Dit komt uit de Geany IDE)
Het is de -pthread dat belangrijk is !
En deze header insluiten in uw programma :
#include <pthread.h>
En ge kunt starten
Hieronder een klein voorbeeld van multithreading.
*******************************************************************************
#include <stdio.h>
#include <unistd.h> // posix library
#include <pthread.h>
void* myturn (void * arg)
{
for(int i=0;i < 8;i++)
{
sleep(1);
printf("My Turn ! %d\n",i);
}
return NULL;
}
void yourturn ()
{
for(int i=0;i < 3;i++)
{
sleep(2);
printf("Your Turn ! %d\n",i);
}
}
int main(int argc, char **argv)
{
pthread_t newthread;
pthread_create(&newthread , NULL , myturn , NULL);
yourturn();
pthread_join(newthread , NULL);
pthread_exit(NULL);
return 0;
}
en het resultaat:
en dit gebeurt er als de code niet juist is , m.a.w. geen threads.
***********************************************************************************
Geen opmerkingen:
Een reactie posten