energy changed
This commit is contained in:
@@ -180,23 +180,23 @@ bool Serial::ReadData(unsigned char *buffer, unsigned int length) {
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
string get_uart_dev_name(){
|
string get_uart_dev_name() {
|
||||||
FILE* ls = popen("ls /dev/ttyUSB* --color=never", "r");
|
FILE *ls = popen("ls /dev/ttyUSB* --color=never", "r");
|
||||||
char name[20] = {0};
|
char name[20] = {0};
|
||||||
fscanf(ls, "%s", name);
|
fscanf(ls, "%s", name);
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial::Serial(int nSpeed, char nEvent, int nBits, int nStop) :
|
Serial::Serial(int nSpeed, char nEvent, int nBits, int nStop) :
|
||||||
nSpeed(nSpeed), nEvent(nEvent), nBits(nBits), nStop(nStop){
|
nSpeed(nSpeed), nEvent(nEvent), nBits(nBits), nStop(nStop) {
|
||||||
if(wait_uart){
|
if (wait_uart) {
|
||||||
LOGM("Wait for serial be ready!");
|
LOGM("Wait for serial be ready!");
|
||||||
while(InitPort(nSpeed, nEvent, nBits, nStop) == false);
|
while (InitPort(nSpeed, nEvent, nBits, nStop) == false);
|
||||||
LOGM("Port set successfully!");
|
LOGM("Port set successfully!");
|
||||||
}else{
|
} else {
|
||||||
if(InitPort(nSpeed, nEvent, nBits, nStop)){
|
if (InitPort(nSpeed, nEvent, nBits, nStop)) {
|
||||||
LOGM("Port set successfully!");
|
LOGM("Port set successfully!");
|
||||||
}else{
|
} else {
|
||||||
LOGE("Port set fail!");
|
LOGE("Port set fail!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -207,15 +207,15 @@ Serial::~Serial() {
|
|||||||
fd = -1;
|
fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Serial::InitPort(int nSpeed, char nEvent, int nBits, int nStop){
|
bool Serial::InitPort(int nSpeed, char nEvent, int nBits, int nStop) {
|
||||||
string name = get_uart_dev_name();
|
string name = get_uart_dev_name();
|
||||||
if(name == ""){
|
if (name == "") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if((fd=open(name.data(), O_RDWR)) < 0){
|
if ((fd = open(name.data(), O_RDWR)) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(set_opt(fd, nSpeed, nEvent, nBits, nStop) < 0){
|
if (set_opt(fd, nSpeed, nEvent, nBits, nStop) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -225,13 +225,14 @@ bool Serial::InitPort(int nSpeed, char nEvent, int nBits, int nStop){
|
|||||||
//
|
//
|
||||||
//}
|
//}
|
||||||
|
|
||||||
bool Serial::WriteData(const unsigned char* pData, unsigned int length){
|
bool Serial::WriteData(const unsigned char *pData, unsigned int length) {
|
||||||
int cnt=0, curr=0;
|
int cnt = 0, curr = 0;
|
||||||
while((curr=write(fd, pData+cnt, length-cnt))>0 && (cnt+=curr)<length);
|
if (fd <= 0)return false;
|
||||||
if(cnt < 0){
|
while ((curr = write(fd, pData + cnt, length - cnt)) > 0 && (cnt += curr) < length);
|
||||||
|
if (cnt < 0) {
|
||||||
LOGE("Serial offline!");
|
LOGE("Serial offline!");
|
||||||
close(fd);
|
close(fd);
|
||||||
if(wait_uart){
|
if (wait_uart) {
|
||||||
InitPort(nSpeed, nEvent, nBits, nStop);
|
InitPort(nSpeed, nEvent, nBits, nStop);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -239,13 +240,13 @@ bool Serial::WriteData(const unsigned char* pData, unsigned int length){
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Serial::ReadData(unsigned char* buffer, unsigned int length){
|
bool Serial::ReadData(unsigned char *buffer, unsigned int length) {
|
||||||
int cnt=0, curr=0;
|
int cnt = 0, curr = 0;
|
||||||
while((curr=read(fd, buffer+cnt, length-cnt))>0 && (cnt+=curr)<length);
|
while ((curr = read(fd, buffer + cnt, length - cnt)) > 0 && (cnt += curr) < length);
|
||||||
if(cnt < 0){
|
if (cnt < 0) {
|
||||||
LOGE("Serial offline!");
|
LOGE("Serial offline!");
|
||||||
close(fd);
|
close(fd);
|
||||||
if(wait_uart){
|
if (wait_uart) {
|
||||||
InitPort(nSpeed, nEvent, nBits, nStop);
|
InitPort(nSpeed, nEvent, nBits, nStop);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -265,10 +266,13 @@ int Serial::set_opt(int fd, int nSpeed, char nEvent, int nBits, int nStop) {
|
|||||||
|
|
||||||
switch (nBits) {
|
switch (nBits) {
|
||||||
case 7:
|
case 7:
|
||||||
newtio.c_cflag |= CS7;break;
|
newtio.c_cflag |= CS7;
|
||||||
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
newtio.c_cflag |= CS8;break;
|
newtio.c_cflag |= CS8;
|
||||||
default:break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (nEvent) {
|
switch (nEvent) {
|
||||||
@@ -285,7 +289,8 @@ int Serial::set_opt(int fd, int nSpeed, char nEvent, int nBits, int nStop) {
|
|||||||
case 'N': //无校验
|
case 'N': //无校验
|
||||||
newtio.c_cflag &= ~PARENB;
|
newtio.c_cflag &= ~PARENB;
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (nSpeed) {
|
switch (nSpeed) {
|
||||||
|
|||||||
Reference in New Issue
Block a user