Gast
#139368
Hallo! Da ich am verzweifeln bin, wende ich mich zum letzten mal an Euch! Zur Zeit bin ich gerade dabei den SJA1000 an einem LPT Port unter Win2000 mit Borland Builder C++ zu betreiben. Den LPT Port kann ich ohne Probleme ansprechen. So wie es aussieht funktioniert auch die Initialisierung des CAN Controllers. Nur beim Senden einer CAN Botschaft, bleibt das Programm (siehe Funktion unten)immer in der do...while Schleife hängen. Einen CAN Teilnehmer habe ich auch angehängt mit der gleichen Baudrate von 100kBit/s. Wie gesagt den SJA1000 habe ich zusammen mit einem ATMEL Controller am laufen. Klappt wunderbar. Ich weiss einfach nicht mehr weiter. Gibt es hier in diesem Forum jemand der schon einmal einen CAN Baustein an einem LPT Port unter Win2000 bzw. WinXP betrieben hat? /*----CAN Botschaft senden------------------------------------------------*/ void TForm1::canmessage_write(struct message *ptransmit) { unsigned int id_1,id_2,id_3; unsigned int id_1_hilf,id_2_hilf,id_3_hilf; unsigned int trdscr_wert; unsigned int i; id_3=(ptransmit->id)&0x0f; id_2=((ptransmit->id)/16)&0x0f; id_1=((ptransmit->id)/256)&0x0f; id_1_hilf=id_1*32; id_2_hilf=id_2*2; id_3_hilf=id_3/8; trdscr_wert=(id_1_hilf)|(id_2_hilf)|(id_3_hilf); canreg_write(10,trdscr_wert); id_3=(ptransmit->dlc)&0x0f; id_2=(ptransmit->rtr)*16; id_1=((ptransmit->id)&0x0f)*32; trdscr_wert =(id_3)|(id_2)|(id_1); canreg_write(11,trdscr_wert); for (i=0;i<=7;i++) { canreg_write (12+i,ptransmit->byte[i]); } canreg_write (1,0x01); //Sendung auslösen do { } while (((canreg_read(2))&0x08)==0); //warten bis Sendung fertig }