serialport 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,8 +1,11 @@
1
+ 1.0.3 => 04/08/2010: [FIXED] [Windows] Could not specify 10 or "COM10" or higher
2
+ [FIXED] [Windows] Warning passing INT instead of LONG to GetCommModemStatus
3
+
1
4
  1.0.2 => 04/06/2010: [FIXED] Passing a block into open did not properly handle a return from within the block
2
5
 
3
- 1.0.1 => 01/20/2010: [FIXED] Conditional RB_SERIAL_EXPORT (Visual Studio)
6
+ 1.0.1 => 01/20/2010: [FIXED] Conditional RB_SERIAL_EXPORT needed for Visual Studio bonked GCC
4
7
 
5
- 1.0.0 => 01/12/2010: [FIXED] x86_64 segmentation fault
8
+ 1.0.0 => 01/12/2010: [FIXED] x86_64 segmentation faults
6
9
  [NEW] Windows Ruby 1.9 support
7
10
 
8
11
  0.7.4 => 10/12/2009: [NEW] Conditional 1.8.6 & 1.9 support (POSIX only).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.0.3
@@ -21,7 +21,7 @@
21
21
  #ifndef _RUBY_SERIAL_PORT_H_
22
22
  #define _RUBY_SERIAL_PORT_H_
23
23
 
24
- #define RUBY_SERIAL_PORT_VERSION "1.0.1"
24
+ #define RUBY_SERIAL_PORT_VERSION "1.0.3"
25
25
 
26
26
  #include <ruby.h> /* ruby inclusion */
27
27
  #ifdef RUBY_1_9 /* ruby io inclusion */
@@ -2,6 +2,7 @@
2
2
  * Guillaume Pierronnet <moumar@netcourrier.com>
3
3
  * Alan Stern <stern@rowland.harvard.edu>
4
4
  * Daniel E. Shipton <dshipton@redshiptechnologies.com>
5
+ * Hector G. Parra <hector@hectorparra.com>
5
6
  *
6
7
  * This code is hereby licensed for public consumption under either the
7
8
  * GNU GPL v2 or greater.
@@ -60,12 +61,8 @@ VALUE RB_SERIAL_EXPORT sp_create_impl(class, _port)
60
61
  int fd;
61
62
  HANDLE fh;
62
63
  int num_port;
63
- char *port;
64
- char *ports[] = {
65
- "COM1", "COM2", "COM3", "COM4",
66
- "COM5", "COM6", "COM7", "COM8"
67
- };
68
- //int new_fd;
64
+ char *str_port;
65
+ char port[260]; /* Windows XP MAX_PATH. See http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx */
69
66
 
70
67
  DCB dcb;
71
68
 
@@ -78,20 +75,28 @@ VALUE RB_SERIAL_EXPORT sp_create_impl(class, _port)
78
75
  {
79
76
  case T_FIXNUM:
80
77
  num_port = FIX2INT(_port);
81
- if (num_port < 0 || num_port > sizeof(ports) / sizeof(ports[0]))
78
+ if (num_port < 0)
82
79
  {
83
80
  rb_raise(rb_eArgError, "illegal port number");
84
81
  }
85
- port = ports[num_port];
82
+ sprintf(port, "\\\\.\\COM%d", num_port + 1); /* '0' is actually COM1, etc. */
86
83
  break;
87
84
 
88
85
  case T_STRING:
89
86
  Check_SafeStr(_port);
90
87
  #ifdef RUBY_1_9
91
- port = RSTRING_PTR(_port);
88
+ str_port = RSTRING_PTR(_port);
92
89
  #else
93
- port = RSTRING(_port)->ptr;
90
+ str_port = RSTRING(_port)->ptr;
94
91
  #endif
92
+ if (str_port[0] != '\\') /* Check for Win32 Device Namespace prefix "\\.\" */
93
+ {
94
+ sprintf(port, "\\\\.\\%s", str_port);
95
+ }
96
+ else
97
+ {
98
+ sprintf(port, "%s", str_port);
99
+ }
95
100
  break;
96
101
 
97
102
  default:
@@ -99,13 +104,13 @@ VALUE RB_SERIAL_EXPORT sp_create_impl(class, _port)
99
104
  break;
100
105
  }
101
106
 
102
- printf("SerialPort => %s\n", port);
103
107
  fd = open(port, O_BINARY | O_RDWR);
104
- printf(" fd => %i\n", fd);
105
108
  if (fd == -1)
109
+ {
106
110
  rb_sys_fail(port);
111
+ }
112
+
107
113
  fh = (HANDLE) _get_osfhandle(fd);
108
- printf(" fh => %i\n", fh);
109
114
  if (SetupComm(fh, 1024, 1024) == 0)
110
115
  {
111
116
  close(fd);
@@ -557,7 +562,7 @@ void RB_SERIAL_EXPORT get_line_signals_helper_impl(obj, ls)
557
562
  struct line_signals *ls;
558
563
  {
559
564
  HANDLE fh;
560
- int status;
565
+ unsigned long status; /* DWORD */
561
566
 
562
567
  fh = get_handle_helper(obj);
563
568
  if (GetCommModemStatus(fh, &status) == 0)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{serialport}
8
- s.version = "1.0.2"
8
+ s.version = "1.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Guillaume Pierronnet", "Alan Stern", "Daniel E. Shipton", "Tobin Richard", "Hector Parra", "Ryan C. Payne"]
12
- s.date = %q{2010-04-06}
12
+ s.date = %q{2010-04-19}
13
13
  s.description = %q{Ruby/SerialPort is a Ruby library that provides a class for using RS-232 serial ports.}
14
14
  s.email = %q{hector@hectorparra.com}
15
15
  s.extensions = ["ext/native/extconf.rb"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serialport
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Pierronnet
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-06 00:00:00 -07:00
17
+ date: 2010-04-19 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20