Op 30 september 2003 13:34:50 schreef Bastiaan:
a==8
betekend: is a gelijk aan 8?en
a=8
betekend: a is vanaf nu gelijk aan 8
Maar, in het tweede geval (a=8) wordt ook de waarde van de expressie (nu dus 8) als logische waarde gebruikt. Met andere woorden:
if (a=8)
{
printf("Dit is waar\n");
}
else
{
printf("Dit is niet waar\n");
}
zal atijd 'Dit is waar' afdrukken.
Van dit principe had ook gebruik gemaakt kunnen worden in de eerder genoemde while-lus:
while (!(length = serCread(buf, MAXSIZE-1, TIMEOUT))) ;
Nu wordt de vergelijking met 0 (=false) 'impliciet' gedaan.
De leesbaarheid gaat er in dit geval zeker niet op vooruit, maar je zal het in heel veel code tegenkomen.
menno
Je biertje wordt niet jaloers als je een andere pakt, je vrouw wel ...
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 30 september 2003 16:08:37 schreef menno:
Ik wil niet lullig doen, maarehh .. dit heb nix meer te doen met electronica...
Dit is voor de programmering van een microcontroller. Oftwel embedded C, iets wat wel degelijk met elektro van doen heeft. 
menno
Je biertje wordt niet jaloers als je een andere pakt, je vrouw wel ...
Op 30 september 2003 16:10:06 schreef Bastiaan:
[...]
Dit is voor de programmering van een microcontroller. Oftwel embedded C, iets wat wel degelijk met elektro van doen heeft.
Dank je, en ik heb er baat bij want ik snap er soms geen hol van van dat C 
Maareh, als dat == dan ongelijk is aan nul, hoe zou ik het dan aan moeten geven van is wel gelijk aan nul ?
Op 30 september 2003 18:50:16 schreef Antoine:
Maareh, als dat == dan ongelijk is aan nul, hoe zou ik het dan aan moeten geven van is wel gelijk aan nul ?
Uhhh... ikke jouw vraag niet begrijpe?
In C is 0 per definitie FALSE, en alle andere waarden TRUE. Als je logische vergelijkingen wilt maken kan dat met:
== : is gelijk aan
!= : is ongelijk aan
> : is groter dan
etc...
Als je de logica wil omdraaien, kan je het uitroepteken gebruiken. Bijvoorbeeld:
(2>1) : FALSE
!(2>1) : TRUE
Wellicht heeft menno hier toch wel een beetje een punt dat het wat meer op een C-cursus begint te lijken... Maar zolang de mods het goed vinden gaan we rustig door. 
Wat ben je eigenlijk precies met die Rabbit aan het maken?
Maar jij zegt daar dat == 0 is "indien x gelijk is aan 0 dan", maar daar boven zeg je dat "== 0" is ongelijk aan nul bij die while loop ?
Een UDP <-> Serieel converter
[Bericht gewijzigd door Antoine op ]
Op 30 september 2003 22:07:01 schreef Antoine:
Een UDP <-> Serieel converter zodat ik via TCP/IP met een IP adres een serie apparaten aan kan sturen
Ik heb net even op jouw(?) website gekeken, en ik zag daar inderdaad iets op staan van een COM-poort naar een UDP verbinding. Wat voor een protocol draai je over de serieele poort? SLIP? Of iets van jezelf? Ik ben nu bezig met een eigen SLIP(-achtige) implementatie te maken voor een klant die een machine moet aansturen via het netwerk maar geen vrije TCP/IP poorten heeft op zijn machine. Erg interessant!
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 30 september 2003 18:49:14 schreef Antoine:
[...]
Dank je, en ik heb er baat bij want ik snap er soms geen hol van van dat C
Is goed 
Menno heeft wel gelijk. Eigenlijk kun je voor dit soort dingen beter gewoon zoeken met google naar de codes en sites die info over de taal C hebben. (en dat zijn een heleboel sites).
Maar aangezien jij er baat bij hebt, jullie tenminste normaal discussieren en elkaar helpen, het uiteindelijk gaat om embedded C, laat ik dit topic vrolijk doorlopen.
menno
Je biertje wordt niet jaloers als je een andere pakt, je vrouw wel ...
Op 30 september 2003 22:54:17 schreef Bastiaan:
Maar aangezien jij er baat bij hebt, jullie tenminste normaal discussieren en elkaar helpen, het uiteindelijk gaat om embedded C, laat ik dit topic vrolijk doorlopen.
Gelijke monniken, andere kappen ...
Op 30 september 2003 22:14:11 schreef Jeroen Koeter:
[...]
Ik heb net even op jouw(?) website gekeken, en ik zag daar inderdaad iets op staan van een COM-poort naar een UDP verbinding. Wat voor een protocol draai je over de serieele poort? SLIP? Of iets van jezelf? Ik ben nu bezig met een eigen SLIP(-achtige) implementatie te maken voor een klant die een machine moet aansturen via het netwerk maar geen vrije TCP/IP poorten heeft op zijn machine. Erg interessant!
Ehh Jeroen,
Dat heeft niets met E-Train te maken hoor
, laat dat ff duidelijk zijn. Ik heb naast e-train ook nog gewoon werk, en daar ben ik er mee bezig, en de reden dat ik het hier vraag is omdat ik er op internet maar weinig van kan vinden (ik zal wel verkeerd zoeken maar goed).
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 1 oktober 2003 09:10:50 schreef Antoine:
[...]
Ik heb naast e-train ook nog gewoon werk, en daar ben ik er mee bezig
Dus wij zorgen nou eigenlijk voor jouw centjes?!

Bastiaan
Wel on topic blijven he ? 
Nee, je zorgt voor de baas zijn centjes
, overigens werkt alles nu zoals het moet, dus geef je rekening nummer maar, dan stort ik het er wel bij
LOL
Ik krijg mijn centjes toch wel
+)
Groeten
Antoine
Jaja, daar was ik weer.
Ik zit intussen met een probleem, ik krijg een seriele string binnen en die wordt nu perfect vertaald naar UDP en vice versa. Echter als er in die string het karakter met ASCII waarde 0x00 zit dan gaat het fout. Vermoedelijk omdat dat C die 0x00 als NULL karakter ziet. Ik krijg dus de verstuurde string t/m het 0x00 maar daarna niet meer
. Kan ik dit omzijlen ?
Dit gebeurd dus waarschijnlijk met het strncpy commando
Alvast bedankt
Antoine
menno
Je biertje wordt niet jaloers als je een andere pakt, je vrouw wel ...
strncpy stopt zodra een 0 in de source wordt bereikt. Dus geen strncpy gebruiken of zorgen dat er geen 0 in staat.
Da's overigens wel logisch omdat alle string bewerkings functies in ANSI C betrekking hebben op 'null terminated strings'...
O ja, vergeet ik nog wat. Je kan misschien beter memcpy gebruiken, die struikelt niet over een nullll.
[Bericht gewijzigd door menno op ]
Prototype:
void *memcpy(void *dest, const void *src, size_t n);
Die werkt dus hetzelfde ja, en die kopieert ook NULL bytes.
Maar hoe kom jij aan strings met een NULL-byte? Waarschijnlijk zijn het geen C-strings, maar ruwe data.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 8 oktober 2003 19:08:34 schreef Antoine:
memcpy werkt hetzelfde als strncpy ?
Komop he, wel eens van F1 gehoord? 
Op 8 oktober 2003 21:35:07 schreef Bastiaan:
[...]
Komop he, wel eens van F1 gehoord?
Bastiaan,
Ja dat heb ik, en als ik daaruit ook maar IETS kon vinden had ik het hier niet gepost
. Probleem is dat de help bestanden van Dynamic C er van uit gaan dat je C kent..... en die hebben dus geen uitleg over de C taal zelf. Ik heb ook in mijn studieboek gekeken, maar zoals altijd staat alles erin behalve wat je nodig hebt 
Op 8 oktober 2003 19:17:58 schreef Jeroen Koeter:
Prototype:void *memcpy(void *dest, const void *src, size_t n);Die werkt dus hetzelfde ja, en die kopieert ook NULL bytes.
Maar hoe kom jij aan strings met een NULL-byte? Waarschijnlijk zijn het geen C-strings, maar ruwe data.
Klopt keihard ruwe data die terug komt van een serie ingangen, echter het komt voor dat alle ingangen 0 zijn, en dan heb ik dus een 0x00 oftewel NULL character.
Ik vond het al knap van mezelf dat ik de fout in het C programma had gevonden, oplossen is een ander verhaal *haha*
menno
Je biertje wordt niet jaloers als je een andere pakt, je vrouw wel ...
Op 8 oktober 2003 22:03:02 schreef Antoine:
Ik heb ook in mijn studieboek gekeken, maar zoals altijd staat alles erin behalve wat je nodig hebt
Het standaardwerk is "The C Programming Language" van Kernighan & Ritchie, ISBN 0-13-110362-8. Zou ik maar voor m'n verjaardag vragen als ik jou was.
Hoe heb je de poort ingesteld? Ziet die een null-karakter misschien als een soort van scheidingsteken? Soms kan je zoiets instellen (meestal met COM-poorten).
[edit]
Ik heb even in de Dynamic C handleiding gekeken, en het lijkt er niet op dat er zo'n schedingsteken gebruikt wordt.
Post eens (een stuk van) je code, dan kunnen we even meekijken...
[/edit]
[Bericht gewijzigd door Jeroen Koeter op ]
Jeroen daar zat ik ook aan te denken, ik kan er nu even niet bij
, maar ik zal even kijken of ik dat eigenlijk wel mag :s dat is nog niet zeker namelijk...