1
0
mirror of https://github.com/wjwwood/serial.git synced 2026-01-22 11:44:53 +08:00

Correcting some bad logic and making my test run forever to try to judge some basic performance characteristics.

This commit is contained in:
John Harrison 2012-01-13 11:58:33 -06:00
parent f81268fdf0
commit 50972cbf41
3 changed files with 11 additions and 5 deletions

View File

@ -106,12 +106,17 @@ IF(SERIAL_BUILD_TESTS)
# Compile the Serial Listener Test program # Compile the Serial Listener Test program
add_executable(serial_listener_tests tests/serial_listener_tests.cc) add_executable(serial_listener_tests tests/serial_listener_tests.cc)
add_executable(serial_tests tests/serial_tests.cc)
# Link the Test program to the serial library # Link the Test program to the serial library
target_link_libraries(serial_listener_tests ${GTEST_BOTH_LIBRARIES} target_link_libraries(serial_listener_tests ${GTEST_BOTH_LIBRARIES}
serial) serial)
target_link_libraries(serial_tests ${GTEST_BOTH_LIBRARIES}
serial)
# # See: http://code.google.com/p/googlemock/issues/detail?id=146 # # See: http://code.google.com/p/googlemock/issues/detail?id=146
# add_definitions(-DGTEST_USE_OWN_TR1_TUPLE=1) # add_definitions(-DGTEST_USE_OWN_TR1_TUPLE=1)
add_test(AllTestsIntest_serial serial_listener_tests) add_test(AllTestsIntest_serial serial_listener_tests)
add_test(AllTestsIntest_serial serial_tests)
ENDIF(SERIAL_BUILD_TESTS) ENDIF(SERIAL_BUILD_TESTS)
## Setup install and uninstall ## Setup install and uninstall

View File

@ -226,8 +226,8 @@ Serial::SerialImpl::read (size_t size) {
fd_set readfds; fd_set readfds;
memset(buf, 0, (size + 1) * sizeof(*buf)); memset(buf, 0, (size + 1) * sizeof(*buf));
ssize_t bytes_read = 0; ssize_t bytes_read = 0;
while (message.length() < size) { while (bytes_read < size) {
if (timeout_ == -1) { if (timeout_ != -1) {
FD_ZERO(&readfds); FD_ZERO(&readfds);
FD_SET(fd_, &readfds); FD_SET(fd_, &readfds);
struct timeval timeout; struct timeval timeout;
@ -244,7 +244,7 @@ Serial::SerialImpl::read (size_t size) {
} }
} }
if (timeout_ == 1 || FD_ISSET(fd_, &readfds)) { if (timeout_ == -1 || FD_ISSET(fd_, &readfds)) {
ssize_t newest_read = ::read(fd_, ssize_t newest_read = ::read(fd_,
buf + bytes_read, buf + bytes_read,
size - static_cast<size_t>(bytes_read)); size - static_cast<size_t>(bytes_read));

View File

@ -16,14 +16,15 @@ using std::endl;
using serial::Serial; using serial::Serial;
int main(int argc, char **argv) { int main(int argc, char **argv) {
Serial s("/dev/tty.usbserial-A900adHq", 9600, 2000); Serial s("/dev/tty.usbserial-A900adHq", 115200, 2000);
s.flush(); s.flush();
int count = 0; int count = 0;
while (count < 10) { while (1) {
size_t available = s.available(); size_t available = s.available();
cout << "avialable: " << available << endl; cout << "avialable: " << available << endl;
string line = s.readline(); string line = s.readline();
cout << count << ": " << line; cout << count << ": " << line;
count++; count++;
} }
cout << endl << endl;
} }