import_remotecontrol 0.3.3 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +8 -8
  2. data/lib/get_code_list.rb +69 -1
  3. data/lib/import_code.rb +101 -14
  4. metadata +1 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmZhMDNjMTA2ODU5Y2QzZjZhYTQ2MjVjYWNhYjkxMTdjNWJjMjA2Ng==
4
+ ZjhiZWM3ZGEyYjE5ZjA2N2Y3ZmUzZWFkZGMxYzdiNThjMGUzYmExZg==
5
5
  data.tar.gz: !binary |-
6
- ZDBhZGYwNTQyOWQ0ZWFmYTBmMWI3OTllY2E1Y2E1YTFkMWI2ZGJlOQ==
6
+ YjBkZjc0ZWM1MDEwYWU1YzJkYTRhMTM2ZWE1Y2M3NzBlMzJkN2FiMw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ODQ0ZDU5ZTNkN2E2ZWU4MjBjYTY4ZDNmNDdiYWZlZGI0ODViNjU0OWQ2NTMx
10
- NWIxYWFkOGMxYTI5NjRjYWU5OWUxNTUyMmJhYzJkOTU3M2MyYTU4ZTZlNGM2
11
- MDc4YmQ0MWQ3ODlmMzY0Yjg3YjZiYzhkZDAxYzBlNTQ0ZDQyMDU=
9
+ ZDk4MWNmOWVjYjIzYTNhMDNhZGZjYWRlZjdjYjY4Mjc4NmQxNDQ1MTJhNWJk
10
+ ZjU3Y2UzZGVmMTI1NzZmZmYwMjM1MGRiMzI0YWIwYmQwOTQ4NGZiNzI2OGEz
11
+ M2M2NzIxMzkxMmQyZmNhMmEyN2ZjZGM0MTJmYzcyYmZlNTg4ZWU=
12
12
  data.tar.gz: !binary |-
13
- YjBiY2U2MTFiMTg4OWI4ZDViYzY5YTY5NGJkODQ0ZGI2MDVlMjA5NzNhYjkx
14
- OTgxYTI4NGYzNjk5MTdmN2Q2NTQxYzkxZDA5MDU5ODRiMzBjYTdhYzg3M2Rk
15
- ODc5ZTZjZmFiZTI4N2NhYjY1OTEzNGNhNWFlNmY1MzNiZmM4OTY=
13
+ NjhkNjVhMGEyMzVmNDUyNzg0YjQwNDBhODg4MWY4MzlkOGUwMDA3MjQzODll
14
+ MjVhNWMxNzUwNTk2Y2Q5NGY3ZDkyYTNiYTQ0ZjJlODAxMGRjN2EyNWY0ZDJk
15
+ ODhkMDI1ZGVjM2M1NzVmZTJlYjIwNDFiZTJmYzcwZjhkYmMxZDg=
data/lib/get_code_list.rb CHANGED
@@ -1,4 +1,10 @@
1
1
  #encoding:utf-8
2
+
3
+
4
+ #####SHARP有问题需要查看############
5
+ #####关于sharp协议的处理###########
6
+
7
+
2
8
  module GetCodeList
3
9
  # To change this template use File | Settings | File Templates.
4
10
 
@@ -6,7 +12,8 @@ module GetCodeList
6
12
  PROTOCOLNAME="protocol_name"
7
13
  CODE = "code"
8
14
  METHOD_NAME = "method_name"
9
- DEFAULT_PROTOCOL = {"EXT_NEC"=>"1","CUT_NEC"=>"41"}
15
+ DEFAULT_PROTOCOL = {"EXT_NEC"=>"1","CUT_NEC"=>"41","RCA"=>"6","PANASONIC"=>"9","SHARP"=>"7","RC6"=>"A"}
16
+
10
17
 
11
18
  #获取错误信息用于抛出错误
12
19
  def self.get_error_msg(error,options={})
@@ -72,6 +79,14 @@ module GetCodeList
72
79
  ret = chuangWeiCutNec(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
73
80
  when "EXT_NEC"
74
81
  ret = changHongExtNec(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
82
+ when "RCA"
83
+ ret = rca(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
84
+ when "RC6"
85
+ ret = rc6(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
86
+ when "PANASONIC"
87
+ ret = panasonic(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
88
+ #when "SHARP"
89
+ # ret = sharp(DEFAULT_PROTOCOL[code[PROTOCOLNAME]],code[CODE])
75
90
  end
76
91
  rescue => err
77
92
  ret = {}
@@ -97,6 +112,7 @@ module GetCodeList
97
112
  ret
98
113
  end
99
114
 
115
+ #获取反码 (2个16进制数)
100
116
  def self.radix_minus_one_complement(code)
101
117
  begin
102
118
  code = "0" + code if code.size==1
@@ -110,6 +126,18 @@ module GetCodeList
110
126
  ret
111
127
  end
112
128
 
129
+ #获取反码只转换2位16进制数的后1个
130
+ def self.radix_minus_one_complement_only_last_4(code)
131
+ begin
132
+ code = "0" + code if code.size==1
133
+ ret = ""
134
+ ret = code[0] + ((~((code[1]).to_i(16)))&Integer(0b1111)).to_s(16)
135
+ rescue
136
+ raise RuntimeError, get_error_msg("get radix-minus-one complement Error, Error msg : #{err.to_s}",{METHOD_NAME => "radix_minus_one_complement"})
137
+ end
138
+ ret
139
+ end
140
+
113
141
 
114
142
 
115
143
  #对长虹的扩展NEC编码类型的编码数组进行处理
@@ -134,6 +162,46 @@ module GetCodeList
134
162
  end
135
163
  end
136
164
 
165
+ #rca的协议处理
166
+ def self.rca(prtotoname,code)
167
+ begin
168
+ codes = code.split(":")
169
+ ret = "#{prtotoname}:#{codes[0]}:#{radix_minus_one_complement_only_last_4(codes[0].to_s)}:#{codes[1]}:#{radix_minus_one_complement(codes[1].to_s)}"
170
+ rescue => err
171
+ raise RuntimeError, get_error_msg("Protocol Error, Error msg : #{err.to_s}",{METHOD_NAME => "Rac"})
172
+ end
173
+ end
174
+
175
+ #rc6的协议处理
176
+ def self.rc6(prtotoname,code)
177
+ begin
178
+ codes = code.split(":")
179
+ ret = "#{prtotoname}:#{codes[0]}:#{codes[1]}:#{codes[2]}:#{codes[3]}"
180
+ rescue => err
181
+ raise RuntimeError, get_error_msg("Protocol Error, Error msg : #{err.to_s}",{METHOD_NAME => "Rac"})
182
+ end
183
+ end
184
+
185
+ #harp的协议处理
186
+ #def self.sharp(prtotoname,code)
187
+ # begin
188
+ # codes = code.split(":")
189
+ # ret = "#{prtotoname}:#{codes[0]}:#{codes[1]}:#{codes[2]}:#{codes[3]}:#{codes[4]}:#{codes[5]}"
190
+ # rescue => err
191
+ # raise RuntimeError, get_error_msg("Protocol Error, Error msg : #{err.to_s}",{METHOD_NAME => "Rac"})
192
+ # end
193
+ #end
194
+
195
+ #panasonic的协议处理
196
+ def self.panasonic(prtotoname,code)
197
+ begin
198
+ codes = code.split(":")
199
+ ret = "#{prtotoname}:#{codes[0]}:#{codes[1]}:#{codes[2]}:#{codes[3]}:#{codes[4]}:#{codes[5]}"
200
+ rescue => err
201
+ raise RuntimeError, get_error_msg("Protocol Error, Error msg : #{err.to_s}",{METHOD_NAME => "Rac"})
202
+ end
203
+ end
204
+
137
205
  end
138
206
 
139
207
 
data/lib/import_code.rb CHANGED
@@ -5,6 +5,15 @@ module ImportCode
5
5
  attr_accessor :file_path_array
6
6
  attr_accessor :remote_code_array
7
7
  attr_accessor :protocol_hash
8
+ attr_accessor :statistics
9
+
10
+ def initialize
11
+ self.file_path_array=[]
12
+ self.remote_code_array=[]
13
+ self.protocol_hash={}
14
+ self.statistics = {}
15
+ end
16
+
8
17
 
9
18
  #不是按键编码的KEY
10
19
  DEFAULT_UNCLUDE = ["FileFormat","Remotecontroldescripe","Device","Brand","Model","Button'scounts"]
@@ -79,9 +88,9 @@ module ImportCode
79
88
 
80
89
  #从文件中读入编码并转换为hash的格式来处理
81
90
  def self.getHashRemoteCode(file_path)
91
+ begin
82
92
  ret = {}
83
93
  brand = ""
84
- p "Open File #{file_path}"
85
94
  remote_code_line = File.read(file_path)
86
95
  remote_code_line.split("\r\n").each do |code|
87
96
  i = code.split("=")
@@ -112,48 +121,124 @@ module ImportCode
112
121
  end
113
122
  end
114
123
  end
124
+ _key =""
125
+ _value = -1
126
+ @statistics.each do |key,value|
127
+ if(_value < value)
128
+ _key = key
129
+ _value = value
130
+ end
131
+ end
132
+ ret.merge!({"statistics"=>_key})
115
133
  end
116
134
  end
135
+ rescue => err
136
+ raise ArgumentError, get_error_msg(err,{METHOD_NAME => "getHashRemoteCode"})
137
+ end
117
138
  ret
118
139
  end
119
140
 
120
- #将协议名从不同的协议编码转为了数据库对应的字符串
141
+ #将协议名从不同的协议编码转为了数据库对应的字符串(按品牌进行的处理)
142
+ #def self.getProtocolList(file_path)
143
+ # @protocol_hash = {}
144
+ # protocol_lines = File.read(file_path)
145
+ # protocol_lines.split("\n").each do |protocol_line|
146
+ # protocol = protocol_line.split(":")
147
+ # if(@protocol_hash.has_key?(protocol[0]))
148
+ # @protocol_hash["#{protocol[0]}"].merge!({protocol[1]=>protocol[2]}) if protocol[2]!=nil&&protocol[2]!=""
149
+ # else
150
+ # @protocol_hash["#{protocol[0]}"] = {protocol[1]=>protocol[2]} if protocol[2]!=nil&&protocol[2]!=""
151
+ # end
152
+ # end
153
+ # @protocol_hash
154
+ #end
155
+
156
+
157
+
158
+
159
+
160
+ #获取协议码对应协议(忽视品牌直接按协议码进行的处理)
121
161
  def self.getProtocolList(file_path)
122
162
  @protocol_hash = {}
163
+ begin
123
164
  protocol_lines = File.read(file_path)
124
165
  protocol_lines.split("\n").each do |protocol_line|
125
166
  protocol = protocol_line.split(":")
126
- if(@protocol_hash.has_key?(protocol[0]))
127
- @protocol_hash["#{protocol[0]}"].merge!({protocol[1]=>protocol[2]}) if protocol[2]!=nil&&protocol[2]!=""
167
+ if protocol.count ==2
168
+ protocol<<" "
169
+ end
170
+ unless @protocol_hash.has_key?(protocol[1])
171
+ @protocol_hash.merge!({protocol[1]=>protocol[2]}) if protocol[2]!=nil&&protocol[2]!=""
128
172
  else
129
- @protocol_hash["#{protocol[0]}"] = {protocol[1]=>protocol[2]} if protocol[2]!=nil&&protocol[2]!=""
173
+ unless @protocol_hash[protocol[1]]==nil||@protocol_hash[protocol[1]]==""
174
+ @protocol_hash[protocol[1]]=protocol[2] if protocol[2]!=""&&protocol[2]!=nil
175
+ end
130
176
  end
131
177
  end
178
+ rescue => err
179
+ raise ArgumentError, get_error_msg(err,{METHOD_NAME => "getProtocolList"})
180
+ end
181
+ p @protocol_hash
132
182
  @protocol_hash
133
183
  end
134
184
 
135
185
 
136
- #对按键的编码进行了处理
186
+
187
+
188
+ #对按键的编码进行了处理(按品牌进行的处理)
189
+ #def self.disposeProtocolCode(codes,brand)
190
+ # protocol = ""
191
+ # codelist = codes.split(" ")
192
+ # protocol_name = codelist[0]
193
+ # if @protocol_hash[brand]
194
+ # protocol = @protocol_hash[brand][protocol_name] if @protocol_hash[brand][protocol_name]
195
+ # else
196
+ # end
197
+ # #protocol_user_code = codelist[1]
198
+ # #other_code = ""
199
+ # code = ""
200
+ # p codelist
201
+ # 1.upto(codelist.size-1).each do |index|
202
+ # code =code + codelist[index]
203
+ # code =code + ":" unless index == codelist.size-1
204
+ # end
205
+ # p code
206
+ # {protocol_name:protocol,code:code}
207
+ #end
208
+
209
+ #对按键的编码进行了处理(按协议码进行的处理)
137
210
  def self.disposeProtocolCode(codes,brand)
138
211
  protocol = ""
212
+ begin
139
213
  codelist = codes.split(" ")
140
214
  protocol_name = codelist[0]
141
- if @protocol_hash[brand]
142
- protocol = @protocol_hash[brand][protocol_name] if @protocol_hash[brand][protocol_name]
143
- else
144
- end
145
- #protocol_user_code = codelist[1]
146
- #other_code = ""
215
+ statisticsProtocol(@protocol_hash[protocol_name])
216
+ protocol = @protocol_hash[protocol_name] if @protocol_hash[protocol_name]
147
217
  code = ""
148
- p codelist
149
218
  1.upto(codelist.size-1).each do |index|
150
219
  code =code + codelist[index]
151
220
  code =code + ":" unless index == codelist.size-1
152
221
  end
153
- p code
222
+ rescue => err
223
+ raise ArgumentError, get_error_msg(err,{METHOD_NAME => "disposeProtocolCode"})
224
+ end
154
225
  {protocol_name:protocol,code:code}
155
226
  end
156
227
 
228
+
229
+ def self.statisticsProtocol(protocol_name)
230
+ begin
231
+ unless @statistics.has_key?(protocol_name)
232
+ @statistics.merge!({protocol_name=>1})
233
+ else
234
+ @statistics[protocol_name]=@statistics[protocol_name]+1
235
+ end
236
+ rescue => err
237
+ raise ArgumentError, get_error_msg(err,{METHOD_NAME => "statisticsProtocol"})
238
+ end
239
+ @statistics
240
+ end
241
+
157
242
  #导入遥控编码
158
243
  def self.importRemoteCode(file_msg)
159
244
  remote_code_hash = {}
@@ -181,9 +266,11 @@ module ImportCode
181
266
  #获取遥控编码数组
182
267
  def self.getRemoteCodeArray(dir_path)
183
268
  @remote_code_array = []
269
+ @statistics = {}
184
270
  if FileTest.directory?(dir_path)
185
271
  filenames = getFileNames(dir_path)
186
272
  filenames.each do |file_msg|
273
+ @statistics={}
187
274
  @remote_code_array<<importRemoteCode(file_msg)
188
275
  end
189
276
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: import_remotecontrol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - zql
@@ -43,4 +43,3 @@ signing_key:
43
43
  specification_version: 4
44
44
  summary: only use import remote control code
45
45
  test_files: []
46
- has_rdoc: