D
dancedog
Neues Mitglied
Thread Starter
- Dabei seit
- 13.03.2005
- Beiträge
- 7
- Reaktionspunkte
- 0
Hi, ich muss für ein Schulprojekt etwas mit dem Intelligent Interface von Fischertechnik programmieren. Diese Hardware ist schon etwas älter und benötigt einen seriellen Port. Ich hab mir einen Usb-Seriell Adapter besorgt und installiert (taucht unter /dev/tty.usbserial-blabla) auf.
Nun habe ich folgendes Problem:
So funktioniert das raussenden über die Schnittstelle:
Dass das nicht schön ist, weiss ich. Deshalb habe ich mit termios auch etwas feineres versucht - klappt aber nicht. Jetzt bin ich mal ganz banal daran gegangen und hab es über Low-Level versucht:
Hierbei bleibt das Programm beim ersten write-Befehl hängen und macht nichts mehr!
Innerhalb meine termios-Programms findet folgendes statt:
-->schnipp
<---schnapp
Wenn ich das Programm nun ausführe, kommt folgendes:
--> Schreiben auf Schnittstelle: Resource temporarily unavailable
Gibts da bei Apple einen Kniff, von dem ich nichts weiß?
Hoffe, Ihr könnt mir helfen....bin langsam etwas ratlos.
Achja, an den Permissions dürfte es nicht liegen, die sind:
crw-rw-rw- 1 root wheel 8, 6 9 Aug 18:22 /dev/tty.usbserial-FTCTD5IY
Gruß,
Leon
Nun habe ich folgendes Problem:
So funktioniert das raussenden über die Schnittstelle:
Code:
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
int main()
{
FILE *fd;
fd= fopen("/dev/tty.usbserial-FTCTD5IY","w");
int i;
for(i=0;i<=10000;i++);
{
fputc(193,fd);
fputc(1,fd);
}
fclose(fd);
}
Dass das nicht schön ist, weiss ich. Deshalb habe ich mit termios auch etwas feineres versucht - klappt aber nicht. Jetzt bin ich mal ganz banal daran gegangen und hab es über Low-Level versucht:
Code:
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#include<errno.h>
#include<termios.h>
int main()
{
int fd;
fd = open("/dev/tty.usbserial-FTCTD5IY", O_RDWR | O_NOCTTY | O_NDELAY);
if(fd == -1)
{
perror("Fehler beim Oeffnen:");
}
unsigned char befehl1=193;
unsigned char befehl2=1;
int i=0;
for(i=0;i<20;i++)
{
int rt=10;
rt = write(fd,&befehl1,1);
int rt2=10;
rt2 = write(fd,&befehl2,1);
if(rt == -1 || rt2 == -1)
{
perror("Fehler beim Schreiben");
}
}
close(fd);
}
Hierbei bleibt das Programm beim ersten write-Befehl hängen und macht nichts mehr!
Innerhalb meine termios-Programms findet folgendes statt:
-->schnipp
Code:
unsigned char firstbyte = 0xc1; //das gleich wie dez. 193
rt1=write(fd, &firstbyte, 1);
if(rt1 == -1)
printf("Schreiben auf Schnittstelle: %s\n",strerror(errno));
Wenn ich das Programm nun ausführe, kommt folgendes:
--> Schreiben auf Schnittstelle: Resource temporarily unavailable
Gibts da bei Apple einen Kniff, von dem ich nichts weiß?
Hoffe, Ihr könnt mir helfen....bin langsam etwas ratlos.
Achja, an den Permissions dürfte es nicht liegen, die sind:
crw-rw-rw- 1 root wheel 8, 6 9 Aug 18:22 /dev/tty.usbserial-FTCTD5IY
Gruß,
Leon