Пытаюсь написать программку под FreeBsd которая бы делала то же самое. Отправляла данные из файлика на весы.
Но пока что все бестолку.
Проблема в том что С++ я начал изучать неделю назад и именно ради того чтобы написать эту программу. Так что не бейте больно, а лучше направьте в правильном направлении (что где почитать).
Сейчас пытаюсь просто написать программку которая передаст в эти весы просто одну настройку.
на данный момент получилась вот такая вот программа
Код: Выделить всё
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include <iostream>
using namespace std;
int main(void)
{
int n;
int fd; /* File descriptor for the port */
char buf[200];
struct termios options;
fd = open("/dev/cuad0", O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd == -1) perror("open_port: Unable to open /dev/cuad0 - ");
else
{
fcntl(fd, F_SETFL, 0);
tcgetattr(fd, &options);
cfmakeraw(&options);
/************************************************************************/
// c_cflag
options.c_cflag |= PARENB;
options.c_cflag |= PARODD;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_iflag |= (INPCK);
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
tcsetattr(fd, TCSAFLUSH, &options);
tcflush(fd, TCIOFLUSH); /**/
// Main code
buf[0]=0;
n = write(fd, buf, 1);
usleep(150000);
cout << "Written:" << n << '\n';
usleep (150000);
read(fd,buf,1);
cout << "Readen:" << int(buf[0]) << '\n';
buf[0]=0x01;
n = write(fd, buf, 1);
usleep(150000);
cout << "Written:" << n << '\n';
usleep (150000);
read(fd,buf,1);
cout << "Readen:" << int(buf[0]) << '\n';
buf[0]=0;
buf[1]=60;
n = write(fd, buf, 2);
usleep(150000);
cout << "Written:" << n << '\n';
usleep (150000);
read(fd,buf,3);
cout << "Readen:" << int(buf[0]) << '\n';
close(fd);
}
}результат ее работы такой
Код: Выделить всё
Written:1
Readen:0
Written:1
Readen:1
Written:2
Readen:0при этом то что ожидалось с весами не происходит
алгоритм по которому делалась программа