【问题标题】:Writing Enum List Values to Serial Port将枚举列表值写入串行端口
【发布时间】:2014-02-07 19:12:54
【问题描述】:

是否可以获取枚举列表项的值?我创建了一个枚举列表,其中每个项目都与一个字节值相关联。

public enum Items : byte
{
   Item1 = 0x00,
   Item2 = 0x01,
   Item3 = 0x02 .... 
}

我的列表框填充了这些项目,我正在寻找一种方法来写入关联的字节值(如果被选中)。是否有类似于以下示例的内容可以用于此类任务?

if(listbox.SelectedItem = Item1 .. 2 .. 3)
{
  // Write byte value of Item1 .. 2 .. 3 via serial port
}

【问题讨论】:

  • 只需将所选项目转换为byteport.Write((byte)listbox.SelectedItem);(请注意,如果ListBox 中的项目是枚举成员,则此方法有效)。
  • 谢谢丹尼斯 ...我尝试使用这种方法,但我收到一条错误消息,指出“无法从 'byte' 转换为 'string'。所以我尝试了:port.Write(((byte)listbox. SelectedItem).ToString()) 但随后我收到“指定的演员表无效”消息。
  • @Nevets Dennis 有正确的想法,我已经在我的回答中详细说明了。

标签: c# enums serial-port


【解决方案1】:

正如@Dennis 建议的那样,您只需要将enum 转换为byte。然后您需要将其作为byte[] 传递给Write

port.Write(new [] { (byte) listBox.SelectedItem }, 0, 1);

【讨论】:

  • 谢谢格伦。我尝试使用这种方法,但我收到一条错误消息,指出“无法从 'byte' 转换为 'string'。所以我尝试了:port.Write(((byte)listbox.SelectedItem).ToString()) 但随后我收到了“指定的转换无效”消息。
  • @Nevets 根据您所说的,您的 listBox.SelectedItem 应该是 enum 类型的 Items。所以很可能不是这种情况,这导致了你的错误。
  • 所以SelectedItem 的类型是String。您需要将 Enum.TryParse 发送到您的 Items 枚举,然后像我所做的那样转换为 byte
  • @Nevets 看这个链接:stackoverflow.com/questions/1578775/…
  • 这回答了我的最后一个问题。谢谢你一百万次!
猜你喜欢
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2018-12-15
  • 1970-01-01
相关资源
最近更新 更多