I have been trying to connect to a Garmin GPS and just echo the NMEA data to
the console
for a proof of concept. While I think I am getting closer it still just shows
zero for the data
received. I have looked at many examples here and the code is starting to look
correct.
Also if I log onto the board using COM2 it asks for a password ???
Here is the code and the settings are the standard ones on the Debian release
(using the
CF card and Debian)
#include <stdio.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open_port(char* device_name)
{
int file_id;
file_id = open(device_name, O_RDONLY | O_NOCTTY | O_NDELAY);
if(file_id == -1)
{
printf("Failed to open device\n");
}
return file_id;
}
int read_port(int file_id)
{
char buffer[512];
int count=0;
int lines = 0;
while(lines < 50)
{
read(file_id, buffer, count);
lines++;
/* Add terminator and print if non-zero */
if(count > 0)
{
buffer[count] = '\0';
printf("Line %d has %d characters\n", lines, count);
printf("%s\n", buffer);
}
else
{
printf("Zero characters read\n");
}
}
}
void port_configuration(int file_id)
{
struct termios options;
int x;
tcgetattr (file_id, &options);
printf("speed in %d out %d\n", options.c_ispeed, options.c_ospeed);
printf("mode in %d out %d\n", options.c_iflag, options.c_oflag);
printf("control flag %d\n", options.c_cflag);
printf("local flag %d\n", options.c_lflag);
cfsetispeed(&options, B4800);
cfsetospeed(&options, B4800);
options.c_cflag = 2096;
options.c_lflag = 4;
options.c_oflag = 0;
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~CRTSCTS;
tcsetattr (file_id, TCSANOW, &options);
}
int main(int argc, char* argv[])
{
int file_id;
/* Check the command */
if(argc < 2)
{
printf("serial_tester <device>\n");
return 0;
}
/* Open the port */
printf("Opening device %s\n", argv[1]);
file_id = open_port(argv[1]);
/* Get port configuration */
port_configuration(file_id);
/* Set the port to non bolocking and Read the port */
read_port(file_id);
close((file_id));
}
Thanks for helping a newbie out. Also I am open to any suggested reading that
would
have let me find it myself.
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/
|