| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | Serial I/O {4 of 10} |
DM> if TX_free>0 then doswrite(Fport,fchar,1,ret); Calling DosWrite/Read for each byte is __very__ expensive. You should try and combine your ReadChar and ReadBlock (and WriteChar/WriteBlock) so they use the same buffer (which is emptied by another thread perhaps). DM> (* DM> Procedure WriteBLOCK(Var buf; Var towrite:longint; Var DM> numb_writ:longint); DM> Note that writeblock has been commented out because the method DM> used is EXTREMELY prone to inaccuracies and DM> loss of characters. DM> Use "Writestring" instead. DM> BEGIN DM> doswrite(Fport,buf,towrite,numb_writ); DM> end; DM> *) This is probably because of the write mode that the port is in. I did not see any ioctl call in your code to set the write mode (see DCBINFO). If the write mode is "no wait" when your program starts, the code above will probably cause characters to be lost (you don't test to see how many bytes were actually written). --- Maximus/2 2.02p1* Origin: Sol 3/Toronto (905)858-8488 (1:259/414) SEEN-BY: 105/42 620/243 711/401 409 410 413 430 807 808 809 934 955 712/407 SEEN-BY: 515 628 704 713/888 800/1 7877/2809 @PATH: 259/414 400 99 250/99 3615/50 396/1 270/101 105/103 42 712/515 @PATH: 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.