aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Kontkanen <tero.k@granitedevices.fi>2016-12-29 18:36:22 +0200
committerTero Kontkanen <tero.k@granitedevices.fi>2016-12-29 18:49:47 +0200
commit6ce53fb1222a91d3e709e4a604a44a8ca33bc00c (patch)
treea6d28e08fb9595c4158a83a91e41fb1dea0a02a0
parent1f976e7371a1da4d2b7d3e33587f6c03c33c9eed (diff)
downloadSimpleMotionV2-6ce53fb1222a91d3e709e4a604a44a8ca33bc00c.tar.gz
SimpleMotionV2-6ce53fb1222a91d3e709e4a604a44a8ca33bc00c.zip
Replaced RS232 library by customized code, not tested yet (win or linux)
-rw-r--r--SimpleMotionV2.pri4
-rw-r--r--busdevice.c10
-rw-r--r--pcserialport.c209
-rw-r--r--pcserialport.h40
-rw-r--r--rs232.c402
-rw-r--r--rs232.h81
-rw-r--r--simplemotion.c5
-rw-r--r--simplemotion_private.h4
8 files changed, 264 insertions, 491 deletions
diff --git a/SimpleMotionV2.pri b/SimpleMotionV2.pri
index 0885991..29dc8e7 100644
--- a/SimpleMotionV2.pri
+++ b/SimpleMotionV2.pri
@@ -5,8 +5,8 @@ DEPENDPATH += $$PWD
DEFINES += SIMPLEMOTIONV2_LIBRARY
-SOURCES += $$PWD/sm_consts.c $$PWD/simplemotion.c $$PWD/busdevice.c $$PWD/rs232.c
+SOURCES += $$PWD/sm_consts.c $$PWD/simplemotion.c $$PWD/busdevice.c $$PWD/pcserialport.c
HEADERS += $$PWD/simplemotion_private.h\
- $$PWD/rs232.h $$PWD/busdevice.h $$PWD/simplemotion.h $$PWD/sm485.h $$PWD/simplemotion_defs.h
+ $$PWD/pcserialport.h $$PWD/busdevice.h $$PWD/simplemotion.h $$PWD/sm485.h $$PWD/simplemotion_defs.h
diff --git a/busdevice.c b/busdevice.c
index c82e27b..c4f89a1 100644
--- a/busdevice.c
+++ b/busdevice.c
@@ -1,6 +1,6 @@
#include "busdevice.h"
-#include "rs232.h"
+#include "pcserialport.h"
#include <string.h>
#define BD_NONE 0
@@ -67,7 +67,7 @@ smbusdevicehandle smBDOpen( const char *devicename )
if(strncmp(devicename,"COM",3) == 0 || strncmp(devicename,"/dev/tty",8) == 0) //use rs232 lib
{
- BusDevice[handle].comPort=OpenComport( devicename, SMBusBaudrate );
+ BusDevice[handle].comPort=serialPortOpen( devicename, SMBusBaudrate );
if( BusDevice[handle].comPort == -1 )
{
return -1; //failed to open
@@ -101,7 +101,7 @@ smbool smBDClose( const smbusdevicehandle handle )
if( BusDevice[handle].bdType==BD_RS )
{
- CloseComport( BusDevice[handle].comPort );
+ serialPortClose( BusDevice[handle].comPort );
BusDevice[handle].opened=smfalse;
return smtrue;
}
@@ -142,7 +142,7 @@ smbool smBDTransmit(const smbusdevicehandle handle)
if( BusDevice[handle].bdType==BD_RS )
{
- if(SendBuf(BusDevice[handle].comPort,BusDevice[handle].txBuffer, BusDevice[handle].txBufferUsed)==BusDevice[handle].txBufferUsed)
+ if(serialPortWriteBuffer(BusDevice[handle].comPort,BusDevice[handle].txBuffer, BusDevice[handle].txBufferUsed)==BusDevice[handle].txBufferUsed)
{
BusDevice[handle].txBufferUsed=0;
return smtrue;
@@ -166,7 +166,7 @@ smbool smBDRead( const smbusdevicehandle handle, smuint8 *byte )
if( BusDevice[handle].bdType==BD_RS )
{
int n;
- n=PollComport(BusDevice[handle].comPort, byte, 1);
+ n=serialPortRead(BusDevice[handle].comPort, byte, 1);
if( n!=1 ) return smfalse;
else return smtrue;
}
diff --git a/pcserialport.c b/pcserialport.c
new file mode 100644
index 0000000..5abd07e
--- /dev/null
+++ b/pcserialport.c
@@ -0,0 +1,209 @@
+/*
+ * pcserialport.h
+ *
+ * Header for PC serial port access library (win/linux)
+ *
+ * Created on: 28.12.2016
+ * Author: Tero
+ *
+ * Inspired by RS232 library by Teunis van Beelen
+ */
+
+
+
+#include "pcserialport.h"
+#include "simplemotion_private.h" //needed for timeout variable
+
+#ifdef __linux__
+
+#include <termios.h>
+#include <limits.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+smint32 serialPortOpen(const char * port_device_name, smint32 baudrate_bps)
+{
+ int port_handle;
+ int err;
+ int baudrateEnumValue;
+ struct termios new_port_settings;
+
+ switch(baudrate_bps)
+ {
+ case 9600 : baudrateEnumValue = B9600; break;
+ case 19200 : baudrateEnumValue = B19200; break;
+ case 38400 : baudrateEnumValue = B38400; break;
+ case 57600 : baudrateEnumValue = B57600; break;
+ case 115200 : baudrateEnumValue = B115200; break;
+ case 230400 : baudrateEnumValue = B230400; break;
+ case 460800 : baudrateEnumValue = B460800; break;
+ case 500000 : baudrateEnumValue = B500000; break;
+ case 576000 : baudrateEnumValue = B576000; break;
+ case 921600 : baudrateEnumValue = B921600; break;
+ case 1000000 : baudrateEnumValue = B1000000; break;
+ case 1115200 : baudrateEnumValue = B1152000; break;
+ case 1500000 : baudrateEnumValue = B1500000; break;
+ case 2000000 : baudrateEnumValue = B2000000; break;
+ case 2500000 : baudrateEnumValue = B2500000; break;
+ case 3000000 : baudrateEnumValue = B3000000; break;
+ case 3500000 : baudrateEnumValue = B3500000; break;
+ case 4000000 : baudrateEnumValue = B4000000; break;
+ default : smDebug(-1,Low,"Serial port error: unsupported baudrate\n");
+ return(1);
+ break;
+ }
+
+ port_handle = open(port_device_name, O_RDWR | O_NOCTTY );
+ if(port_handle==-1)
+ {
+ smDebug(-1, Low, "Serial port error: port open failed");
+ return(port_handle);
+ }
+
+ memset(&new_port_settings, 0, sizeof(new_port_settings)); //reset struct
+
+ new_port_settings.c_cflag = baudrateEnumValue | CS8 | CLOCAL | CREAD;
+ new_port_settings.c_iflag = IGNPAR;
+ new_port_settings.c_oflag = 0;
+ new_port_settings.c_lflag = 0;
+ new_port_settings.c_cc[VMIN] = 0; /* non blocking mode */
+ new_port_settings.c_cc[VTIME] = readTimeoutMs/100; /* timeout 100 ms steps */
+ err = tcsetattr(port_handle, TCSANOW, &new_port_settings);
+ if(err==-1)
+ {
+ close(port_handle);
+ smDebug(-1, Low, "Serial port error: failed to set port parameters");
+ return -1;
+ }
+ return port_handle;
+}
+
+
+smint32 serialPortRead(smint32 serialport_handle, smuint8 *buf, smint32 size)
+{
+ smint32 n;
+ if(size>4096) size = 4096;
+ n = read(serialport_handle, buf, size);
+ return n;
+}
+
+
+smint32 serialPortWrite(smint32 serialport_handle, unsigned char byte)
+{
+ smint32 n;
+ n = write(serialport_handle, &byte, 1);
+ if(n<0)
+ return 1;
+ return 0;
+}
+
+
+smint32 serialPortWriteBuffer(smint32 serialport_handle, unsigned char *buf, smint32 size)
+{
+ return(write(serialport_handle, buf, size));
+}
+
+
+void serialPortClose(smint32 serialport_handle)
+{
+ close(serialport_handle);
+}
+
+#else //windows: for API, see https://msdn.microsoft.com/en-us/library/ff802693.aspx
+
+#include <windows.h>
+#include <string.h>
+
+smint32 serialPortOpen(const char *port_device_name, smint32 baudrate_bps)
+{
+ char port_def_string[64], port_name[32];
+ HANDLE port_handle;
+
+ sprintf(port_def_string,"baud=%d data=8 parity=N stop=1", (int)baudrate_bps);
+ sprintf(port_name,"\\\\.\\%s",port_device_name);
+
+ port_handle = CreateFileA(port_name,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
+
+ if(port_handle==INVALID_HANDLE_VALUE)
+ {
+ smDebug( -1, Low, "Serial port error: Unable to create serial port handle");
+ return -1;
+ }
+
+ //fill DCB settings struct
+ DCB dcb;
+ FillMemory(&dcb, sizeof(dcb), 0);
+ dcb.DCBlength = sizeof(dcb);
+
+ if(!BuildCommDCBA(port_def_string, &dcb))
+ {
+ smDebug( -1, Low, "Serial port error: Unable to build DCB settings\n");
+ CloseHandle(port_handle);
+ return -1;
+ }
+
+ if(!SetCommState(port_handle, &dcb))
+ {
+ smDebug( -1, Low, "Serial port error: Unable to set port settings\n");
+ CloseHandle(port_handle);
+ return -1;
+ }
+
+ //set timeout
+ COMMTIMEOUTS port_timeouts;
+ port_timeouts.ReadTotalTimeoutConstant = readTimeoutMs;
+ port_timeouts.ReadIntervalTimeout = 0;
+ port_timeouts.ReadTotalTimeoutMultiplier = 0;
+ port_timeouts.WriteTotalTimeoutMultiplier = 50;
+ port_timeouts.WriteTotalTimeoutConstant = 50;
+
+ if(!SetCommTimeouts(port_handle, &port_timeouts))
+ {
+ smDebug( -1, Low, "Serial port error: Failed to set port timeout settings\n");
+ CloseHandle(port_handle);
+ return(-1);
+ }
+
+ return( (smint32)port_handle);
+}
+
+
+smint32 serialPortRead(smint32 serialport_handle, unsigned char *buf, smint32 size)
+{
+ smint32 n;
+ if(size>4096)
+ size = 4096;
+ ReadFile((HANDLE)serialport_handle, buf, size, (LPDWORD)((void *)&n), NULL);
+ return n;
+}
+
+
+smint32 serialPortWriteByte(smint32 serialport_handle, unsigned char byte)
+{
+ smint32 n;
+ WriteFile((HANDLE)serialport_handle, &byte, 1, (LPDWORD)((void *)&n), NULL);
+ if(n<0)
+ return 1;
+ return 0;
+}
+
+
+smint32 serialPortWriteBuffer(smint32 serialport_handle, unsigned char *buf, smint32 size)
+{
+ smint32 n;
+ if(WriteFile((HANDLE)serialport_handle, buf, size, (LPDWORD)((void *)&n), NULL))
+ return n;
+ return -1;
+}
+
+
+void serialPortClose(smint32 serialport_number)
+{
+ CloseHandle((HANDLE)serialport_number);
+}
+
+
+#endif//windows
diff --git a/pcserialport.h b/pcserialport.h
new file mode 100644
index 0000000..832786d
--- /dev/null
+++ b/pcserialport.h
@@ -0,0 +1,40 @@
+/*
+ * pcserialport.h
+ *
+ * Header for PC serial port access library (win/linux)
+ *
+ * Created on: 28.12.2016
+ * Author: Tero
+ *
+ * Inspired by RS232 library by Teunis van Beelen
+ */
+
+
+/* Todo:
+ -Restore port settings at CloseComport
+ */
+
+#ifndef PCSERAILPORT_H
+#define PCSERAILPORT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "simplemotion.h"
+
+//return port handle or -1 if fails
+smint32 serialPortOpen(const char *port_device_name, smint32 baudrate_bps);
+smint32 serialPortRead(smint32 serialport_handle, unsigned char *buf, smint32 size);
+smint32 serialPortWriteByte(smint32 serialport_handle, unsigned char byte);
+smint32 serialPortWriteBuffer(smint32 serialport_handle, unsigned char *buf, smint32 size);
+void serialPortClose(smint32 serialport_number);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/rs232.c b/rs232.c
deleted file mode 100644
index 4055e2a..0000000
--- a/rs232.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
-***************************************************************************
-*
-* Author: Teunis van Beelen
-*
-* Copyright (C) 2005, 2006, 2007, 2008, 2009 Teunis van Beelen
-*
-* teuniz@gmail.com
-*
-***************************************************************************
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation version 2 of the License.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License along
-* with this program; if not, write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*
-***************************************************************************
-*
-* This version of GPL is at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
-*
-***************************************************************************
-*/
-
-
-
-#include "rs232.h"
-#include "simplemotion_private.h"
-
-
-#ifdef __linux__ /* Linux */
-
-
-int OpenComport(const char * comport_name, int baudrate)
-{
- int error;
- int handle;
- int baudr;
- struct termios new_port_settings;
-
- switch(baudrate)
- {
- case 50 : baudr = B50;
- break;
- case 75 : baudr = B75;
- break;
- case 110 : baudr = B110;
- break;
- case 134 : baudr = B134;
- break;
- case 150 : baudr = B150;
- break;
- case 200 : baudr = B200;
- break;
- case 300 : baudr = B300;
- break;
- case 600 : baudr = B600;
- break;
- case 1200 : baudr = B1200;
- break;
- case 1800 : baudr = B1800;
- break;
- case 2400 : baudr = B2400;
- break;
- case 4800 : baudr = B4800;
- break;
- case 9600 : baudr = B9600;
- break;
- case 19200 : baudr = B19200;
- break;
- case 38400 : baudr = B38400;
- break;
- case 57600 : baudr = B57600;
- break;
- case 115200 : baudr = B115200;
- break;
- case 230400 : baudr = B230400;
- break;
- case 460800 : baudr = B460800;
- break;
- case 500000 : baudr = B500000;
- break;
- case 576000 : baudr = B576000;
- break;
- case 921600 : baudr = B921600;
- break;
- case 1000000 : baudr = B1000000;
- break;
- case 1115200 : baudr = B1152000;
- break;
- case 1500000 : baudr = B1500000;
- break;
- case 2000000 : baudr = B2000000;
- break;
- case 2500000 : baudr = B2500000;
- break;
- case 3000000 : baudr = B3000000;
- break;
- case 3500000 : baudr = B3500000;
- break;
- case 4000000 : baudr = B4000000;
- break;
- default : printf("invalid baudrate\n");
- return(1);
- break;
- }
-
- //Cport[comport_number] = open(comports[comport_number], O_RDWR | O_NOCTTY | O_NDELAY);
- handle = open(comport_name, O_RDWR | O_NOCTTY );
- if(handle==-1)
- {
- perror("unable to open comport ");
- return(handle);
- }
-
- memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */
-
- new_port_settings.c_cflag = baudr | CS8 | CLOCAL | CREAD;
- new_port_settings.c_iflag = IGNPAR;
- new_port_settings.c_oflag = 0;
- new_port_settings.c_lflag = 0;
- new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */
- new_port_settings.c_cc[VTIME] = readTimeoutMs/100; /* block untill a timer expires (n * 100 mSec.) */
- error = tcsetattr(handle, TCSANOW, &new_port_settings);
- if(error==-1)
- {
- close(handle);
- perror("unable to adjust portsettings ");
- return(-1);
- }
-
- return(handle);
-}
-
-
-int PollComport(int comport_number, unsigned char *buf, int size)
-{
- int n;
-
- #ifndef __STRICT_ANSI__ /* __STRICT_ANSI__ is defined when the -ansi option is used for gcc */
- if(size>SSIZE_MAX) size = (int)SSIZE_MAX; /* SSIZE_MAX is defined in limits.h */
- #else
- if(size>4096) size = 4096;
- #endif
-
- n = read(comport_number, buf, size);
-
- return(n);
-}
-
-
-int SendByte(int comport_number, unsigned char byte)
-{
- int n;
-
- n = write(comport_number, &byte, 1);
- if(n<0) return(1);
-
- return(0);
-}
-
-
-int SendBuf(int comport_number, unsigned char *buf, int size)
-{
- return(write(comport_number, buf, size));
-}
-
-
-void CloseComport(int comport_number)
-{
- close(comport_number);
- //feature removed, not restorint old settings :
- //tcsetattr(comport_number, TCSANOW, old_port_settings + comport_number);
-}
-
-/*
-Constant Description
-TIOCM_LE DSR (data set ready/line enable)
-TIOCM_DTR DTR (data terminal ready)
-TIOCM_RTS RTS (request to send)
-TIOCM_ST Secondary TXD (transmit)
-TIOCM_SR Secondary RXD (receive)
-TIOCM_CTS CTS (clear to send)
-TIOCM_CAR DCD (data carrier detect)
-TIOCM_CD Synonym for TIOCM_CAR
-TIOCM_RNG RNG (ring)
-TIOCM_RI Synonym for TIOCM_RNG
-TIOCM_DSR DSR (data set ready)
-*/
-
-int IsCTSEnabled(int comport_number)
-{
- int status;
-
- status = ioctl(comport_number, TIOCMGET, &status);
-
- if(status&TIOCM_CTS) return(1);
- else return(0);
-}
-
-
-#else /* windows */
-
-#ifdef DEBUG_COMPORT
-//for finding problem with windows calls
-void print_win32_system_error(char *name) {
- // Retrieve, format, and print out a message from the last error. The
- // `name' that's passed should be in the form of a present tense noun
- // (phrase) such as "opening file".
- //
- char *ptr = NULL;
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM,
- 0,
- GetLastError(),
- 0,
- (char *)&ptr,
- 1024,
- NULL);
-
- fprintf(stderr, "\nError %s: %ls\n", name, ptr);
- LocalFree(ptr);
-}
-#endif
-
-int OpenComport(const char * comport_name, int baudrate)
-{
-
- char baudr[64], portname[64];
- HANDLE handle;
-
-
- switch(baudrate)
- {
- case 110 : strcpy(baudr, "baud=110 data=8 parity=N stop=1");
- break;
- case 300 : strcpy(baudr, "baud=300 data=8 parity=N stop=1");
- break;
- case 600 : strcpy(baudr, "baud=600 data=8 parity=N stop=1");
- break;
- case 1200 : strcpy(baudr, "baud=1200 data=8 parity=N stop=1");
- break;
- case 2400 : strcpy(baudr, "baud=2400 data=8 parity=N stop=1");
- break;
- case 4800 : strcpy(baudr, "baud=4800 data=8 parity=N stop=1");
- break;
- case 9600 : strcpy(baudr, "baud=9600 data=8 parity=N stop=1");
- break;
- case 19200 : strcpy(baudr, "baud=19200 data=8 parity=N stop=1");
- break;
- case 38400 : strcpy(baudr, "baud=38400 data=8 parity=N stop=1");
- break;
- case 57600 : strcpy(baudr, "baud=57600 data=8 parity=N stop=1");
- break;
- case 115200 : strcpy(baudr, "baud=115200 data=8 parity=N stop=1");
- break;
- case 128000 : strcpy(baudr, "baud=128000 data=8 parity=N stop=1");
- break;
- case 256000 : strcpy(baudr, "baud=256000 data=8 parity=N stop=1");
- break;
- case 460800 : strcpy(baudr, "baud=460800 data=8 parity=N stop=1");
- break;
- case 500000 : strcpy(baudr, "baud=500000 data=8 parity=N stop=1");
- break;
- case 576000 : strcpy(baudr, "baud=576000 data=8 parity=N stop=1");
- break;
- case 921600 : strcpy(baudr, "baud=921600 data=8 parity=N stop=1");
- break;
- case 1000000 : strcpy(baudr, "baud=1000000 data=8 parity=N stop=1");
- break;
- case 1115200 : strcpy(baudr, "baud=1115200 data=8 parity=N stop=1");
- break;
- case 1500000 : strcpy(baudr, "baud=1500000 data=8 parity=N stop=1");
- break;
- case 2000000 : strcpy(baudr, "baud=2000000 data=8 parity=N stop=1");
- break;
- case 2500000 : strcpy(baudr, "baud=2500000 data=8 parity=N stop=1");
- break;
- case 3000000 : strcpy(baudr, "baud=3000000 data=8 parity=N stop=1");
- break;
- case 3500000 : strcpy(baudr, "baud=3500000 data=8 parity=N stop=1");
- break;
- case 4000000 : strcpy(baudr, "baud=4000000 data=8 parity=N stop=1");
- break;
- default : printf("invalid baudrate\n");
- return(-1);
- break;
- }
-
- strcpy(portname,"\\\\.\\");
- strcat(portname,comport_name);
-
- handle = CreateFileA(portname,
- GENERIC_READ|GENERIC_WRITE,
- 0, /* no share */
- NULL, /* no security */
- OPEN_EXISTING,
- 0, /* no threads */
- NULL); /* no templates */
-
- if(handle==INVALID_HANDLE_VALUE)
- {
- printf("unable to open comport\n");
- return(-1);
- }
-
- DCB port_settings;
- memset(&port_settings, 0, sizeof(port_settings)); /* clear the new struct */
- port_settings.DCBlength = sizeof(port_settings);
-
- if(!BuildCommDCBA(baudr, &port_settings))
- {
- printf("unable to set comport dcb settings\n");
- CloseHandle(handle);
- return(-1);
- }
-
- if(!SetCommState(handle, &port_settings))
- {
- printf("unable to set comport cfg settings\n");
- CloseHandle(handle);
- return(-1);
- }
-
- COMMTIMEOUTS Cptimeouts;
-
- Cptimeouts.ReadIntervalTimeout = 0;
- Cptimeouts.ReadTotalTimeoutMultiplier = 0;
- Cptimeouts.ReadTotalTimeoutConstant = readTimeoutMs;
- Cptimeouts.WriteTotalTimeoutMultiplier = 50;
- Cptimeouts.WriteTotalTimeoutConstant = 50;
-
-
- if(!SetCommTimeouts(handle, &Cptimeouts))
- {
- printf("unable to set comport time-out settings\n");
- CloseHandle(handle);
- return(-1);
- }
-
- return( (int)handle);
-}
-
-
-int PollComport(int comport_number, unsigned char *buf, int size)
-{
- int n;
-
- if(size>4096) size = 4096;
-
- /* added the void pointer cast, otherwise gcc will complain about */
- /* "warning: dereferencing type-punned pointer will break strict aliasing rules" */
-
- ReadFile((HANDLE)comport_number, buf, size, (LPDWORD)((void *)&n), NULL);
-
- return(n);
-}
-
-
-int SendByte(int comport_number, unsigned char byte)
-{
- int n;
-
- WriteFile((HANDLE)comport_number, &byte, 1, (LPDWORD)((void *)&n), NULL);
-
- if(n<0) return(1);
-
- return(0);
-}
-
-
-
-int SendBuf(int comport_number, unsigned char *buf, int size)
-{
- int n;
-
- if(WriteFile((HANDLE)comport_number, buf, size, (LPDWORD)((void *)&n), NULL))
- {
- return(n);
- }
-
- return(-1);
-}
-
-
-void CloseComport(int comport_number)
-{
- CloseHandle((HANDLE)comport_number);
-}
-
-
-
-#endif
-
diff --git a/rs232.h b/rs232.h
deleted file mode 100644
index 7c90fea..0000000
--- a/rs232.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-***************************************************************************
-*
-* Author: Teunis van Beelen
-*
-* Copyright (C) 2005, 2006, 2007, 2008, 2009 Teunis van Beelen
-*
-* teuniz@gmail.com
-*
-***************************************************************************
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation version 2 of the License.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License along
-* with this program; if not, write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*
-***************************************************************************
-*
-* This version of GPL is at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
-*
-***************************************************************************
-*/
-
-/* libraray modified for Simplemotion, major changes:
- -OpenComport now returns actual file handle that must be passed to rx/tx functions, or -1 if fails
-
- Todo:
- -Restore port settings at CloseComport
- */
-
-#ifndef rs232_INCLUDED
-#define rs232_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-
-
-#ifdef __linux__
-
-#include <termios.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <limits.h>
-
-#else
-
-#include <windows.h>
-
-#endif
-
-//return port handle or -1 if fails
-int OpenComport(const char * comport_name, int baudrate);
-int PollComport(int, unsigned char *, int);
-int SendByte(int, unsigned char);
-int SendBuf(int, unsigned char *, int);
-void CloseComport(int);
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
-
-
diff --git a/simplemotion.c b/simplemotion.c
index ea773ac..cdee1d1 100644
--- a/simplemotion.c
+++ b/simplemotion.c
@@ -92,7 +92,10 @@ void smDebug( smbus handle, smVerbosityLevel verbositylevel, char *format, ...)
va_start(fmtargs,format);
vsnprintf(buffer,sizeof(buffer)-1,format,fmtargs);
va_end(fmtargs);
- fprintf(smDebugOut,"%s: %s",smBus[handle].busDeviceName, buffer);
+ if(handle>=0)
+ fprintf(smDebugOut,"%s: %s",smBus[handle].busDeviceName, buffer);
+ else
+ fprintf(smDebugOut,"SMLib: %s",buffer);//no handle given
}
}
#else
diff --git a/simplemotion_private.h b/simplemotion_private.h
index e46dc1c..85e54f9 100644
--- a/simplemotion_private.h
+++ b/simplemotion_private.h
@@ -43,6 +43,10 @@ extern const smuint8 table_crc8[];
extern FILE *smDebugOut; //such as stderr or file handle. if NULL, debug info disbled
extern smuint16 readTimeoutMs;
+//smDebug: prints debug info to smDebugOut stream. If no handle availab, set it to -1.
+//set verbositylevel according to frequency of prints made.
+//I.e Low=low frequency, so it gets displayed when global verbosity level is set to at least Low or set it to Trace which gets filtered
+//out if global verbisity level is set less than Trace
void smDebug( smbus handle, smVerbosityLevel verbositylevel, char *format, ...);
SM_STATUS smRawCmd( const char *axisname, smuint8 cmd, smuint16 val, smuint32 *retdata );