Ahoj potřeboval bych napsat program pro otevření supliku který vyšle signál na jeden pin a počká na odpověď která přijde po druhém pinu. Napsal jsem to kdysi pro windows a teď bych to potřeboval pod Linuxem.
Tady je výpis toho programu pro windows .
//PortCom.h
#ifndef header_PortCom
#define header_PortCom
#include <windows.h>
#include <mmsystem.h>
#include <iostream>
#include <stdio.h>
#include <ctime>
//--------------------------------------------------------------------------//
bool OpenCom(int CisloComu);
void CloseCom(void);
void Wait_us(unsigned __int64 prodleva);
void CloseI2C(void);
void SetDTR(bool x);
void SetRTS(bool x);
void SetTX(bool x);
bool GetCTS(void);
bool GetDSR(void);
bool GetRing(void);
bool GetRLSD(void);
void Wait_us(unsigned __int64 prodleva);
void Wait_s(int prodleva);
#endif
#include "PortCom.h"
int main(int argc, char* argv[])
{
OpenCom(1);
std::cout << "Otviram suplik.";
SetTX(true);
while(GetCTS() == false);
SetTX(false);
std::cout << "\a\rOK koncim.";
Wait_s(1);
return 0;
}
Tohle se mi podařilo sesmolit pro linux ale nemůžu přijít na to jak vyslat signál na určitý pin konektoru.
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#define SERPORT "/dev/ttyS0"
//---------------------------------------------------------------------------
int fd;
int status;
int main(int argc, char **argv)
{
fd = open(SERPORT, O_RDWR);
printf ("Otviram suplik.\n");
do{
ioctl(fd, TIOCMGET, &status); /* Nacte stav */
status |= TIOCM_ST; //pin 2 ST
ioctl(fd, TIOCMSET, &status); /* Nastavi bit */
ioctl(fd, TIOCMGET, &status); /* Nacte stav */
status |= TIOCM_CTS; //pin 8 ST
}while((status &TIOCM_CTS) != 0);//Stoji dokud je 0
ioctl(fd, TIOCMGET, &status); /* Nacte stav */
status |= TIOCM_ST; //pin 2 ST
ioctl(fd, TIOCMBIC, & status); /* Vynuluje bit */
printf ("OK koncim.\n");
close(fd);
return 0;
}