has_one :productosxpza, class_name: "Productosxpza", foreign_key: "Producto"
accepts_nested_attributes_for :productosxpza
def self.to_csv(options = {})#exportar
CSV.generate(options) do |csv|
csv << column_names
all.each do |producto|
csv << producto.attributes.values_at(*column_names)
end
end
end
def self.import(file)#importar
spreadsheet = open_spreadsheet(file)
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
producto = find_by_Clave(row["Clave"]) || new
producto.attributes = row.to_hash.slice(*row.to_hash.keys) #*row.to_hash.keys para rails 4 que sustituye el attr_accesible de rails 3
producto.save!
end
end
def self.open_spreadsheet(file)#importar
case File.extname(file.original_filename)
when '.csv' then Roo::Csv.new(file.path, packed: false, file_warning: :ignore)
#when '.xls' then Roo::Excel.new(file.path, packed: false, file_warning: :ignore)
when '.xlsx' then Roo::Excelx.new(file.path, packed: false, file_warning: :ignore)
#else raise "Unknown file type: #{file.original_filename}"
else raise "El formato debe ser .xlsx ó .csv"
end
end
informations.Any()为false
我的错误在哪里?
答案 0 :(得分:1)
我还没有在UWP上尝试过,但是当访问10或更高的COM端口时有Windows quirk:您需要从用户模式指定完整的符号设备名称。即,前置\\.\
:
var selector = SerialDevice.GetDeviceSelector(@"\\.\COM14");
答案 1 :(得分:1)
Microsoft SerialCommuncation文档站点描述了当前不支持系统内部端口: Microsoft Docs about windows.devices.serialcommunication
我不明白为什么不这样做,他们将来可能会添加此功能。
一种解决方法是:
C# 使用标准.NET System.IO.Ports.SerialPort类(除GetPortNames()之外),所有内容在.NET中均可用于UWP 6.1.5。作为GetPortNames的替代,您可以P / Interop到GetCommPorts。
C ++ / winrt 使用新的Windows 10 RS3 / 4 API调用OpenCommPort。请参见Windows头文件中的函数原型,因为此函数当前未在MS文档中记录。
请注意,还应确保应用程序在.appxmanifest文件中“声明”了对串行端口的访问权限:
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>