Ok, i got the Libusb running nicely together with my sensor proc. Now
im searching a way to dynamicly add/open/claim etc. USB devices so I
can work with them...
I know the struct usb_dev_handle *xxx (in this case usb_handle) is the
struct I need to work with, but is there some sort of way to make an
array out of these structs ? Im somehow failling but I know someone
with more expierence can shurly help me :) Another thing...speed
issue, im not getting more than 100 Samples per second out of the TS-
7260, even with USB turned of etc..im using the #include <sys/time.h>
with a timer interval of 5000 uSec which should be 200 Sps..but
somehow its not running faster...is this board just so slow (which is
hard to believe with 200 Mhz)..see my code attached :)
Thanks alot
**********************************************************************
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <usb.h>
#include <unistd.h>
void timer_handler (int signum);
int create_socket;
char return_buf[3];
char message[3];
struct usb_dev_handle* usb_handle;
int count;
char count2[1];
void open_socket()
{
struct sockaddr_in address;
if((create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0)
setsockopt(create_socket,0,SO_KEEPALIVE,0,1);
address.sin_family = AF_INET;
address.sin_port = htons(15000);
inet_aton("192.168.0.100", &address.sin_addr);
if(connect (create_socket,(struct sockaddr *) &address, sizeof
(address) ) ==0);
}
void timer_handler (int signum)
{
count++;
int state;
message[0] = 0xCF;
long int i;
state = usb_bulk_write(usb_handle,0x01,message,1,1);
printf("Bytes transfered %i \n",state);
state = usb_bulk_read(usb_handle,0x01,return_buf,10,1);
printf("%i %i\n",return_buf[1], return_buf[2]);
count2[0] = count;
// send(create_socket,count2,1,MSG_NOSIGNAL);
printf("%i\n",count);
}
void Init_Timer()
{
struct sigaction sa;
struct itimerval timer;
/* Install timer_handler as the signal handler for SIGVTALRM. */
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &timer_handler;
sigaction (SIGVTALRM, &sa, NULL);
/* Configure the timer to expire after 250 msec... */
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 1;
/* ... and every 250 msec after that. */
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 5000;
/* Start a virtual timer. It counts down whenever this process is
executing. */
setitimer (ITIMER_VIRTUAL, &timer, NULL);
}
void Set_Up_USB()
{
struct usb_bus *busses;
struct usb_bus *bus;
int i;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
char buf[64];
for(i=0;i<64;i++)
buf[i] = i;
for (bus = busses; bus; bus = bus->next)
{
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next)
{
if (dev->descriptor.idVendor == 0x04d8)
{
int stat;
printf("vendor: %i\n",dev->descriptor.idVendor);
usb_handle = usb_open
stat = usb_set_configuration (usb_handle,dev->config
[0].bConfigurationValue);
printf ("stat:%d from usb_set_config to %x\n",stat,dev->config
[0].bConfigurationValue);
stat = usb_claim_interface(usb_handle, 0);
printf ("stat:%d from claim\n",stat);
}
}
}
}
int main ()
{
Set_Up_USB();
Init_Timer();
open_socket();
/* Do busy work. */
while (1);
close(create_socket);
return 0;
}
********************************************************************
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|