em-printer-serialport 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e7d4117aab80956fbcf052f106f73efadf9253e6
4
+ data.tar.gz: 0cc74bb214d9604438c016bbbd497aef89e5a510
5
+ SHA512:
6
+ metadata.gz: 6b543f80d9b007129eeaae79705c2e5d577ffd28cdd2a5c1a89761427f805a94cda7dd3952521fba5bc52823aaf392a5803c3d287f27e22ae40672897d46d8f5
7
+ data.tar.gz: 21f793d53534ea80f210535b77ed236075c9af4f343132aeea1a50056be462306972c2fec07d29d2faa2e0677c27c0cdc48bd12bf1aca19ea4fab9db6ad832d1
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+ RSpec::Core::RakeTask.new('spec')
6
+ task :default => :spec
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+ require 'em-printer-serialport'
6
+
7
+ EM.run do
8
+ if ARGV.size < 1
9
+ STDERR.print "Usage: #{$0} /dev/tty.usbserial-ABCDEFGH\n"
10
+ exit(1)
11
+ end
12
+
13
+ serial = EventMachine.open_serial(ARGV[0], 9600, 8, 1, SerialPort::NONE)
14
+ serial.on_data do |data|
15
+ puts 'received: ' + data.to_s
16
+ end
17
+
18
+ Thread.new do
19
+ while TRUE do
20
+ serial.send_data STDIN.gets.chomp
21
+ end
22
+ end
23
+
24
+ puts 'Serial monitor initialized. Enter data followed by a newline character.'
25
+ puts 'Ctrl-C to stop'
26
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'em-printer-serialport/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'em-printer-serialport'
8
+ gem.version = Em::Serialport::VERSION
9
+ gem.authors = ['Anup Narkhede', 'Kaz Walker']
10
+ gem.email = ['kaz@printtopeer.com']
11
+ gem.summary = %q{EventMachine compatible serialport library}
12
+ gem.description = %q{}
13
+ gem.homepage = 'https://github.com/PrintToPeer/em-printer-serialport'
14
+ gem.license = 'GPLv3'
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ['lib']
20
+
21
+ gem.add_dependency 'eventmachine', '~> 1.0.0'
22
+ gem.add_dependency 'serialport'
23
+ gem.add_development_dependency 'bundler', '~> 1.3.0'
24
+ gem.add_development_dependency 'rake', '~> 10.1.0'
25
+ gem.add_development_dependency 'rspec', '~> 2.14.0'
26
+ end
@@ -0,0 +1,7 @@
1
+ $eventmachine_library = :pure_ruby
2
+ require 'em/pure_ruby'
3
+ require 'serialport'
4
+
5
+ %w(serial_port connection).each do |file|
6
+ require "em-printer-serialport/#{file}"
7
+ end
@@ -0,0 +1,19 @@
1
+ module EventMachine
2
+ class Connection
3
+ def on_data(&blk)
4
+ @on_data = blk
5
+ end
6
+
7
+ def trigger_on_data(data)
8
+ @on_data.call(data) if @on_data
9
+ end
10
+
11
+ def receive_data data
12
+ trigger_on_data(data)
13
+ end
14
+
15
+ def associate_callback_target(sig)
16
+ return(nil)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,31 @@
1
+ module EventMachine
2
+ class << self
3
+ def connect_serial(dev, baud, databits, stopbits, parity)
4
+ SerialPort.open(dev, baud, databits, stopbits, parity).uuid
5
+ end
6
+
7
+ def open_serial(dev, baud, databits, stopbits, parity, handler=nil)
8
+ klass = if(handler and handler.is_a?(Class))
9
+ handler
10
+ else
11
+ Class.new(Connection) {handler and include handler}
12
+ end
13
+ uuid = connect_serial(dev, baud, databits, stopbits, parity)
14
+ connection = klass.new uuid
15
+ @conns[uuid] = connection
16
+ block_given? and yield connection
17
+ connection
18
+ end
19
+ end
20
+
21
+ class SerialPort < StreamObject
22
+ def self.open(dev, baud, databits, stopbits, parity)
23
+ io = ::SerialPort.new(dev, baud, databits, stopbits, parity)
24
+ self.new(io)
25
+ end
26
+
27
+ def initialize(io)
28
+ super
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ module Em
2
+ module Serialport
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
data/readme.md ADDED
@@ -0,0 +1,39 @@
1
+ # em-printer-serialport
2
+
3
+ Eventmachine compatible asynchronous, ruby-serialport library. A fork of em-serialport that is maintained by PrintToPeer.
4
+
5
+ ## Installation
6
+
7
+ gem install em-printer-serialport
8
+
9
+ ## Usage
10
+
11
+ If you are on Mac, you need to set up a virtual USB serial port by installing a driver from [http://www.ftdichip.com/Drivers/VCP.htm](http://www.ftdichip.com/Drivers/VCP.htm). Identify your serial port device. For ex: /dev/tty.usbserial-xxxxxxxx
12
+
13
+ EM.run do
14
+ serial = EventMachine.open_serial('/dev/tty.usbserial-xxxxxxxx', 9600, 8, 1, 0)
15
+ serial.send_data 'foo'
16
+
17
+ serial.on_data do |data|
18
+ # do something with data
19
+ end
20
+ end
21
+
22
+ ## Serial Monitor
23
+
24
+ The gem comes with a simple command line Serial Monitor. Launch it as:
25
+
26
+ bundle exec serial-monitor /dev/tty.usbserial-xxxxxxxx
27
+
28
+ Here is a working example, tested with [arduino echo server](https://github.com/railsbob/arduino-examples/tree/master/echo_server). It simply reads and writes data to serial port from command line.
29
+
30
+ Serial monitor initialized. Enter data followed by a newline character.
31
+ Ctrl-C to stop
32
+ hello
33
+ received: hello
34
+ A very long sentence
35
+ received: A v
36
+ received: ery long
37
+ received: sentence
38
+
39
+
data/spec/echo_spec.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ # Tested with arduino echo server on USB serial port driver
4
+ describe 'Echo server test' do
5
+ it 'should send and receive data over serial port' do
6
+ @data = nil
7
+ serial_device = '/dev/tty.usbserial-A100QDRR'
8
+
9
+ EM.run do
10
+ serial = EventMachine.open_serial(serial_device, 9600, 8, 1, SerialPort::NONE)
11
+ serial.send_data 'an'
12
+
13
+ serial.on_data do |data|
14
+ data.should == 'an'
15
+ EM.stop
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'EM::Serialport' do
4
+ it 'should use pure_ruby as library_type' do
5
+ EventMachine.library_type.should eql(:pure_ruby)
6
+ end
7
+
8
+ it 'should load dependencies' do
9
+ defined?(EventMachine::StreamObject).should eql('constant')
10
+ defined?(SerialPort).should eql('constant')
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'em-printer-serialport'
5
+
6
+ RSpec.configure do |config|
7
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: em-printer-serialport
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Anup Narkhede
8
+ - Kaz Walker
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: eventmachine
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 1.0.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 1.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: serialport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: 1.3.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 1.3.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 10.1.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 10.1.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 2.14.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 2.14.0
84
+ description: ''
85
+ email:
86
+ - kaz@printtopeer.com
87
+ executables:
88
+ - serial-monitor
89
+ extensions: []
90
+ extra_rdoc_files: []
91
+ files:
92
+ - .gitignore
93
+ - Gemfile
94
+ - Rakefile
95
+ - bin/serial-monitor
96
+ - em-printer-serialport.gemspec
97
+ - lib/em-printer-serialport.rb
98
+ - lib/em-printer-serialport/connection.rb
99
+ - lib/em-printer-serialport/serial_port.rb
100
+ - lib/em-printer-serialport/version.rb
101
+ - readme.md
102
+ - spec/echo_spec.rb
103
+ - spec/em_serialport_spec.rb
104
+ - spec/spec_helper.rb
105
+ homepage: https://github.com/PrintToPeer/em-printer-serialport
106
+ licenses:
107
+ - GPLv3
108
+ metadata: {}
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 2.0.7
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: EventMachine compatible serialport library
129
+ test_files:
130
+ - spec/echo_spec.rb
131
+ - spec/em_serialport_spec.rb
132
+ - spec/spec_helper.rb
133
+ has_rdoc: