>По манам там полгода разбираться.
неа, пол дня
man open
man tcgetattr
man tcsetattr
man select
man read
man write
man tcdrain
man close
если надо чтобы две проги одновременно тыкались на один порт
man fcntl
//==============================================================================
==================
//@return: 1 - success
// 0 - must never return. if return then we have internal programm error
// other - error write to port
int watcher_write_port(const watcher_port_t* port,unsigned char*buff,const unsigned buff_size){
int ret_code,err_no;
if(!buff_size){
syslog(LOG_WARNING,"%s:WARNING:Unexpected write 0 bytes to port %s : Possible Internal program error.Please report cvv@email.zp.ua",
__func__,port->name); return 1;
}
//Пишем в порт
errno=0;
ret_code=write(port->fd, buff, buff_size);
err_no=errno;
//Обрабатываем результат записи в порт
if(ret_code<0) { syslog(LOG_ERR,"%s:write:ERROR:can't write to port %s : %s",
__func__,port->name,strerror(errno)); return -err_no;
}else if(ret_code!=buff_size){ syslog(LOG_ERR,"%s:write:ERROR:Unexpected error write to port %s : Possible Internal program error."
"Please report cvv@email.zp.ua. Exit", __func__,port->name); exit(1);
}else if(port->debug) { watcher_log_data (__func__,port,WD_TRANSMITED,buff,buff_size);
}
//Ждём ухода данных из порта
errno=0;
ret_code=tcdrain(port->fd);
err_no=errno;
switch(ret_code){
case -1:syslog(LOG_ERR,"%s:tcdrain:ERROR:can't drain data in port %s : %s",
__func__,port->name,strerror(errno)); return -err_no; break;
case 0:if(port->debug) syslog(LOG_INFO,"%s:tcdrain:INFO:data in port %s successfully drained",
__func__,port->name); return 1; break;
default:syslog(LOG_ERR,"%s:tcdrain:ERROR:Unexpected error drain data in port %s : Possible Internal program error."
" Please report cvv@email.zp.ua. Exit", __func__,port->name);exit(1);
}
//Сюда мы попадать не должны но для отлова багов
syslog(LOG_ERR,"%s:ERROR:Unexpected error in port %s : Internal program error.Please report cvv@email.zp.ua", __func__,port->name); return 0;
};
Можно ли с com-портами работать на java в linux и free-bsd? Образовалась задачка управлять группой устройств по rs-485 half duplex через переходник rs485-to-rs232 от icp/das, либо через адаптер moxa cp-132ul, что выбрать: c++ или java? На c++ приходилось лет 6 - 7 назад решать в windows похожие задачи, но на java, вроде как, приложения быстрее лепятся... Так на чём?
если не производить их настройку то можно. но если попытатся изменить параметры порта то скорее всего будут траблы. лучше С здесь ничего нету. Правда мож есть врапперы для С++
ЗЫ: А что гугль расказал на тему programming+serial+java????
>если не производить их настройку то можно. но если попытатся изменить параметры порта то скорее всего будут траблы. лучше С здесь ничего нету. Правда мож есть врапперы для С++
Интересует именно полный контроль: менять скорость, паритет и т.д.
>ЗЫ: А что гугль расказал на тему programming+serial+java????