Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 17.10.2006, 00:41 Titel: |
|
|
Eigentlich wollte ich wissen ob das einlesen der Kameradaten mit com_port_lib_winapi32.bas jetzt klappt?
Natürlich kann man den Buffer auch auf einmal einlesen, entweder in einen mit allocate() angelegten Speicher oder in einen großen String:
Code: |
'*************************************
'Examples
'*************************************
dim as integer ret_val, comport_num, com_timeout
dim as any ptr com_handle
dim as string com_settings_std, error_list
dim as uinteger com_input_buf_size, com_output_buf_size
'*************************************
'com_read_winapi32() example
'*************************************
dim as uinteger com_NumberOfBytesToRead, com_NumberOfBytesRead,num_all_bytes
dim my_camerabuffer as string
'Initialize variables for open_com_winapi32()
comport_num=4
com_settings_std="baud=9600 parity=N data=8 stop=1"
'[baud=b][parity=p][data=d][stop=s][to={on|off}][xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|off|hs}][rts={on|off|hs|tg}][idsr={on|off}]
com_input_buf_size=32000
com_output_buf_size=0
com_timeout=250 '100-250 seems to be a good value
error_list="" 'open_com_winapi32 errors are stored here
'Open Com port, (get COM port free fileany ptr)
com_handle=open_com_winapi32(comport_num,com_settings_std,com_input_buf_size,com_output_buf_size,com_timeout,error_list)
if error_list <> "" then
print
print "error_list:"
print error_list
endif
'Read bytes from COM port
print "Press any key to start reading from com" & comport_num
sleep
my_camerabuffer=space(16000) 'es muss nicht immer allocate() sein
com_NumberOfBytesToRead=len(my_camerabuffer)
com_read_winapi32 (com_handle,strptr(my_camerabuffer),com_NumberOfBytesToRead,com_NumberOfBytesRead)
'eventuell hinterher noch den COM Empfangsbuffer leeren, damit beim nächsten Einlesen wieder alles von
'vorne anfängt, nur notwendig, wenn zwischenzeitlich der COM Port nicht wieder geschlossen
'und geöffnet wurde:
'
'com_clearbuffers (com_handle, 1, 1)
'...
'Mach irgendwas mit my_camerabuffer
'....
'....
'z.B:
'print my_camerabuffer
'...
'...
'oder den String wie normalen allocate() Speicher ansprechen, strptr() liefert den Pointer:
'
'for i= 0 to len(my_camerabuffer)-1
'print chr$(peek(strptr(my_camerabuffer)+i));
'next i
'Close COM port
close_com_winapi32(com_handle)
print
print "Reading finished, press any key to continue/exit"
sleep
|
|
|
Nach oben |
|
 |
pebisoft gesperrt
Anmeldungsdatum: 28.11.2004 Beiträge: 131
|
Verfasst am: 17.10.2006, 15:39 Titel: |
|
|
hallo, es kommt die meldung :
Compiler output:
D:\FreeBASIC\pebi-free\rs232\com11.o:fake:(.text+0x11a): undefined reference to `OPEN_COM_WINAPI32@24'
er findet den aufruf nicht.
ich weiss jetzt auch nicht, in welcher bi vom windowsordner dieser aufruf ist.
ich habe den headerkopf von deiner letzten datei mit reingenommen.
mfg |
|
Nach oben |
|
 |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 17.10.2006, 19:09 Titel: |
|
|
pebisoft hat Folgendes geschrieben: | hallo, es kommt die meldung :
Compiler output:
D:\FreeBASIC\pebi-free\rs232\com11.o:fake:(.text+0x11a): undefined reference to `OPEN_COM_WINAPI32@24'
er findet den aufruf nicht.
ich weiss jetzt auch nicht, in welcher bi vom windowsordner dieser aufruf ist.
ich habe den headerkopf von deiner letzten datei mit reingenommen.
mfg |
Standardfrage: Welche Version des Freebasic Compilers verwendest du?
Ich habe getestet mit:
FB-v0.17b-jul-30-testing-win32
(ist ein Update für 0.16, einfach runterladen, entpacken und die entsprechenden Ordner und Files über die 0.16 Version kopieren)
http://prdownloads.sourceforge.net/fbc/FB-v0.17b-jul-30-testing-win32.zip?download
und mit der aktuellen CVS Version von vorgestern |
|
Nach oben |
|
 |
pebisoft gesperrt
Anmeldungsdatum: 28.11.2004 Beiträge: 131
|
Verfasst am: 17.10.2006, 20:19 Titel: |
|
|
ich arbeite mit der version 0.16.
mfg |
|
Nach oben |
|
 |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 17.10.2006, 20:42 Titel: |
|
|
pebisoft hat Folgendes geschrieben: | ich arbeite mit der version 0.16.
mfg |
Schätze das ist des Rätsels Lösung, also dann mal schnell auf FB-v0.17b-jul-30-testing-win32 upgraden, gib Bescheid obs geklappt hat. |
|
Nach oben |
|
 |
pebisoft gesperrt
Anmeldungsdatum: 28.11.2004 Beiträge: 131
|
Verfasst am: 17.10.2006, 21:14 Titel: |
|
|
geht mit 0.17 auch nicht, es findet die funktionen nicht. die müssen in irgend einer bi sein, die von der windows.bi noch nicht eingebunden wurde.
mfg |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 17.10.2006, 22:21 Titel: |
|
|
Versuch mal das:
Code: |
#define WIN_INCLUDEALL
#include "windows.bi"
|
Guck am besten mal in windows.bi rein, da steht irgendwie sowas:
Code: |
#ifdef WIN_INCLUDEALL
#include blubb
#include bla
#include nochwas
#endif
|
Ich bin mich nich sicher, ob es WIN_INCLUDEALL war, aber sowas ähnliches muss es gewesen sein(kann leider nicht nachgucken, bin unter linux). _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
pebisoft gesperrt
Anmeldungsdatum: 28.11.2004 Beiträge: 131
|
Verfasst am: 17.10.2006, 22:50 Titel: |
|
|
hallo, jetzt geht es. vielen dank für deine unermüdliche hilfe.
mfg |
|
Nach oben |
|
 |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 19.10.2006, 17:15 Titel: |
|
|
pebisoft hat Folgendes geschrieben: | hallo, jetzt geht es. vielen dank für deine unermüdliche hilfe.
mfg |
Was geht denn nun?
Das kompilieren von com_port_lib_winapi32.bas mit
Zitat: | #define WIN_INCLUDEALL
#include "windows.bi" |
(wobei mich wundern würde, dass man das braucht, ich habe es nochmal getestet, com_port_lib_winapi32.bas ließ sich mit 0.16b, 0.17b und CVS kompilieren ohne dass ich was ändern mußte, habs auf zwei verschiedenen Rechnern probiert XP und W2k)
?
oder
die Übertragung der Daten von der Gamboycam zum Rechner mittels com_port_lib_winapi32.bas ?
EDIT:
Ich bin ja auch dafür, dass Freebasic so fehlerfrei und kompatibel, wie möglich wird, aber bevor ich einen möglichen Fehler oder Verbesserungsvorschlag auf www.freebasic.net/forum poste möchte ich das schon ganz gerne mit Fakten belegen, (bzw. so gut erklären wie möglich), können.
com_port_lib_winapi32.bas ist vielleicht noch nicht das Gelbe vom Ei, aber ein kleiner Erfahrungsbericht würde mich dann schon eher dazu motivieren, mich mit dem Thema weiterzubeschäftigen. |
|
Nach oben |
|
 |
pebisoft gesperrt
Anmeldungsdatum: 28.11.2004 Beiträge: 131
|
Verfasst am: 19.10.2006, 18:40 Titel: |
|
|
ich habe jetzt noch einmal freebasic 0.16 aufgespielt und das update 0.17 .
dann die com_port_lib_winapi32.bas plus die anhängsel aus deiner ersten datei. habe die neuen einstellungen durchgeführt 19600baud com1 usw.
es werden 16000byte geschrieben in den buffer und kann sie auch wieder rauslesen. alles mit einem avr gestestet.
es geht jetzt auch ohne : #define WIN_INCLUDEALL...hmmm
mfg |
|
Nach oben |
|
 |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 19.10.2006, 20:06 Titel: |
|
|
Ok, alles klar, dann werde ich das demnächst mal auf www.freebasic.net/forum als 'Possible Bug', 'Missing Feature' bzw. 'Feature Request' posten und hoffe darauf, dass dann jemand in der Lage, ist zu erklären warum Open Com/RB nicht funktioniert oder den Fehler in der nächsten CVS zu beheben.
Gruss
terminate |
|
Nach oben |
|
 |
terminate
Anmeldungsdatum: 12.09.2006 Beiträge: 56
|
Verfasst am: 23.10.2006, 11:00 Titel: |
|
|
coderJeff ist auch der Ansicht, dass es bei den RBn/TBn Einstellungen einen Bug in FreeBASICs Open Com gibt und wird das Problem sobald wie möglich beheben, ("As soon as possible").
http://www.freebasic.net/forum/viewtopic.php?p=52214#52214
Schätze mal das wars dann.
terminate |
|
Nach oben |
|
 |
|