风斗吧 2015-04-10 03:24 采纳率: 0%
浏览 2601

C#控制LED灯总算发送是失败

图片说明
主程序
using LedDemo.Common;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace LedDemo
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{

    public MainWindow()
    {
        InitializeComponent();
    }

    private void window_loaded(object sender, RoutedEventArgs e)
    {
        //定义数组aryPort,遍历数组
        //GetPortNames方法,返回当前计算机可以用的端口 ,以数组的方式返回
        string[] aryPort = SerialPort.GetPortNames();
        foreach(string item in aryPort)
        {
            //将数组的项添加到下拉框的列表中
            xl.Items.Add(item);

        }
        //设置默认的选择项为第一个找的项(端口)
        xl.SelectedIndex = 0;
    }
    /// <summary>
    /// Send and Save
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void b_Click(object sender, RoutedEventArgs e)
    {
        int speed = -1;  //定义速度的值为-1;
        //定义一个布尔型,
        bool isSuccess = int.TryParse(sd.Text,out speed);
        //判断速度值得大小,是否在规定的范围内
        if (isSuccess == false ||(speed <0 || speed>7)) 
        {
            //弹出的对话框,提示信息;
            MessageBox.Show("请输入正确的值!(0--7)");
            return;
        }
        LedCtrl led = new LedCtrl(xl.Text, speed);
        string msg = led.SendSaveMsg(sr.Text);
        MessageBox.Show(msg);
    }

    /// <summary>
    /// Send No Save
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    private void nb_Click(object sender, RoutedEventArgs e)
    {
        int speed = -1;
        bool isSuccess = int.TryParse(sd.Text, out speed);
        if (isSuccess == false || (speed <0 || speed >7))
        {
            MessageBox.Show("请输入正确的值! (0--7) ");
            return;
        }
        LedCtrl led = new LedCtrl(xl.Text,speed);
        string msg = led.SendMsg(sr.Text);
        MessageBox.Show(msg);
    }
}

}

类包
using ICS.Acquisition;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LedDemo.Common
{
public class LedCtrl
{
ICS.Acquisition.LEDAnalysis led = null;
ICS.Acquisition.LedMessage ledMode = new ICS.Acquisition.LedMessage();
public LedCtrl(string serialNumber, int speed)
{
ICS.Models.Com.ComSettingModel com = new ICS.Models.Com.ComSettingModel();
com.LedCom = serialNumber;
led = ClassFactory.GetProvider(equipmentCategory.LEDAnalysis, com) as LEDAnalysis;
ledMode.HardwareAddress = "01";
ledMode.PlayerModel = "01";
ledMode.StopTime = "00";
ledMode.ColorType = "00";

        //数据有效时间  范围0--99
        ledMode.EffectiveTime = "00";
        ledMode.Speed = speed.ToString();
    }

    /// <summary>
    /// 发送并保存
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public string SendSaveMsg(string msg)
    {
        ledMode.Context = msg;
        if (led.SetSaveLedMessage(ledMode))
        {
            return "发送成功";
        }
        else 
        {
            return "发送失败";
        }
    }

    public string SendMsg(string msg) 
    {
        ledMode.Context = msg;
        if (led.SetLedMessage(ledMode))
        {
            return "发送成功";
        }
        else 
        {
            return "发送失败";
        }
    }
}

}

  • 写回答

2条回答

  • threenewbee 2015-04-10 04:24
    关注

    你的com2口是否存在,波特率、校验方式等等怎么设置的。

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记