ld220 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c2a5f8d7a58515ecc219dcd411f4047d771c86e3
4
+ data.tar.gz: 105772d419bea226b86ab8d687d75d460663772e
5
+ SHA512:
6
+ metadata.gz: cbcd3f9c840165910aaf1fcccb6319e3544d40a21a5db1c481813206b544d1d95855476aecad00ef6c6d5e7744536e4eca2a5837e282afd507910290bbf231ca
7
+ data.tar.gz: 323b3530efdf7975230d526357d78373a313279531e2745fe4c0e5830196e5ffb7952094eb1c19660afef782aba0177a0df20f2f68aa50d82e3254fd77ef2c04
@@ -0,0 +1 @@
1
+ .*.sw*
@@ -0,0 +1,8 @@
1
+ require 'pry'
2
+ require './lib/ld220'
3
+ require './lib/ld220/mode/utc'
4
+
5
+ s = LD220.new '/dev/ttyUSB0', LD220::Mode::UTC
6
+ s.debug = true
7
+
8
+ binding.pry
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ld220/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "ld220"
7
+ s.version = LD220::VERSION
8
+ s.authors = ["Ben Klang"]
9
+ s.email = ["bklang@mojolingo.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Interface to LD220 Point-of-Sale Display}
12
+ s.description = %q{This gem provides an interface and helper functions for displaying messages on LD220 Point-of-Sale displays (eg. HP POS Pole Displays)}
13
+ s.license = 'MIT'
14
+
15
+ s.rubyforge_project = "ld220"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_runtime_dependency %q<rubyserial>
22
+
23
+ s.add_development_dependency %q<pry>
24
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ require 'rubyserial'
3
+
4
+ class LD220
5
+ attr_accessor :debug
6
+
7
+ def initialize(device, mode, options = {})
8
+ extend mode
9
+ options[:speed] ||= 9600
10
+ @debug = options[:debug]
11
+ @display = Serial.new device, options[:speed]
12
+ end
13
+
14
+ def type(string, delay = 0.1)
15
+ clear
16
+ sleep delay
17
+ string.split('').each do |char|
18
+ write char
19
+ sleep delay
20
+ end
21
+ end
22
+
23
+ def write(data)
24
+ data = data.encode Encoding::US_ASCII
25
+ puts "Sending: #{data.inspect}" if @debug
26
+ @display.write data
27
+ end
28
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+
3
+ class LD220
4
+ class Mode
5
+ module UTC
6
+ ENHANCED_PREAMBLE = "\x1b\x75"
7
+
8
+ def clear
9
+ write "\x1f"
10
+ end
11
+
12
+ def reset
13
+ standard_mode
14
+ move_cursor_to 0
15
+ clear
16
+ end
17
+
18
+ def cursor(enabled)
19
+ write enabled ? "\x13" : "\x14"
20
+ end
21
+
22
+ def move_cursor_to(pos)
23
+ raise ArgumentError, "Position must be between 0 and 39" unless (0..39).include? pos
24
+ write "\x10#{pos.chr}"
25
+ end
26
+
27
+ def scroll_msg(msg)
28
+ msg = msg.to_s
29
+ # Messages longer than 45 chars are accepted, but truncated
30
+ raise ArgumentError, "Message must be 45 or fewer characters" if msg.length > 45
31
+ enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x44#{msg}\x0d" }
32
+ end
33
+
34
+ def scroll_once(msg)
35
+ enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x46#{msg}\x0d" }
36
+ end
37
+
38
+ def stop_scroll
39
+ # There is no documented way to stop an infinite scroll.
40
+ # However, using "scroll once" with an empty value gets us close
41
+ scroll_once ''
42
+ reset
43
+ end
44
+
45
+ def show_time(time = Time.now)
46
+ enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x45#{time.strftime "%H:%M"}\x0d" }
47
+ end
48
+
49
+ def enhanced_cmd
50
+ enhanced_mode
51
+ yield
52
+ standard_mode
53
+ end
54
+
55
+ def enhanced_mode
56
+ write "\x1b\x64"
57
+ end
58
+
59
+ def standard_mode
60
+ write "\x1b\x0f\x0d"
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,3 @@
1
+ class LD220
2
+ VERSION = '0.0.1'
3
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ld220
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ben Klang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubyserial
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: This gem provides an interface and helper functions for displaying messages
42
+ on LD220 Point-of-Sale displays (eg. HP POS Pole Displays)
43
+ email:
44
+ - bklang@mojolingo.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - doc/VFD LD220 User Manual_V2.3.pdf
51
+ - examples/shell
52
+ - ld220.gemspec
53
+ - lib/ld220.rb
54
+ - lib/ld220/mode/utc.rb
55
+ - lib/ld220/version.rb
56
+ homepage: ''
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project: ld220
76
+ rubygems_version: 2.4.6
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Interface to LD220 Point-of-Sale Display
80
+ test_files: []