📄 readburst.c
字号:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include "can.h"
#define DEFAULT_DEV "/dev/can0"
#ifndef TRUE
# define TRUE 1
#endif
#ifndef FALSE
# define FALSE 0
#endif
// Prototypes
void usage( char *pname );
void sortie (int sig );
int fd;
/*--- handler on SIGINT signal : the program quit with CTL-C ---*/
void sortie (int sig )
{
close(fd);
printf("Terminated by user.\n");
exit( 0 );
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// main
//
int main( int argc, char **argv )
{
int n,ret;
char c;
unsigned long i=0;
char szdevice[ 256 ] = DEFAULT_DEV;
int bVerbose = FALSE;
int bDebug = FALSE;
struct canmsg_t readmsg = { 0,0,5,0,0,{0,} };
struct sigaction act;
/*------- register handler on SIGINT signal -------*/
act.sa_handler=sortie;
sigemptyset(&act.sa_mask);
act.sa_flags=0;
sigaction(SIGINT,&act,0);
/*-------------------------------------------------*/
while ( ( c = getopt( argc, argv, "vhdD:")) != EOF) {
switch (c) {
case 'v':
bVerbose = TRUE;
break;
case 'D':
sprintf( szdevice, "/dev/%s", optarg );
break;
case 'd':
bDebug = TRUE;
break;
case 'h':
default:
usage( argv[ 0 ] );
exit(0);
}
}
if ( ( fd = open( szdevice, O_RDONLY ) ) < 0 ) {
perror("open");
printf("Error opening %s\n", szdevice);
exit(1);
}
while ( TRUE ) {
readmsg.flags=0;
readmsg.cob=0;
readmsg.timestamp=0;
ret = read( fd, &readmsg, sizeof( struct canmsg_t ) );
if ( ret < 0 ) {
printf( "Error reading message\n" );
}
else {
fprintf( stdout, "Received message #%lu: id=%lX dlc=%u", i, readmsg.id, readmsg.length );
for( n=0; n < readmsg.length ; n++ )
fprintf( stdout, " %.2X", ( unsigned char ) readmsg.data[ n ] );
fprintf( stdout, "\n");
i++;
}
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// usage
//
void usage( char *pname )
{
fprintf(stderr, "usage: %s options [id [ byte ..]]\n", pname );
fprintf(stderr, "-h\t Prints this message.\n");
fprintf(stderr, "-d\t Enables debug mode.\n");
fprintf(stderr, "-d\t Enables verbose mode.\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -