c#做个计时定时器
comboBox下拉框
labee文字框
修改下拉列表
可以设置多个集合
string data = str.Substring(0,2);//将0和2放入data中
0和2的意思是,从0开始算起,2是指提取2位。这里是得到字符串
time = Convert.ToInt16(data);//得到设定定时值。将字符串转换为整形
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int count;
int time;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string str = comboBox1.Text;//将下拉框内容添加到一个变量
string data = str.Substring(0,2);//从0开始计数,到2位数字,字符串
time = Convert.ToInt16(data);//得到设定定时值(整形)
progressBar1.Maximum = time;//进度条最大数值
timer1.Start();//开始计时
}
private void Form1_Load(object sender, EventArgs e)
{
int i;
for (i = 1; i < 100; i++)
{
comboBox1.Items.Add(i.ToString() + " 秒");
}
comboBox1.Text = "1 秒";
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
label3.Text = (time - count).ToString() + "秒";//将剩余时间显示在文本上,tostring将剩余时间变成字符串
progressBar1.Value = count;//显示进度条进度
if (count == time)
{
timer1.Stop();//时间到,停止计时
System.Media.SystemSounds.Asterisk.Play();//提示音,系统
MessageBox.Show("时间到","提示");
}
}
}
}
C#做个PC串口发送数据
try//防止出错
{
serialPort1.Open();//打开串口
serialPort1.Write(buffer, 0, 1);//发送串口
serialPort1.Close();//关闭串口
}
catch {//如果出错就执行此块代码
if (serialPort1.IsOpen)
serialPort1.Close();//
如果是写数据时出错,
此时窗口状态为开,
就应关闭串口,防止下次不能使用,串口是不能重复打开和关闭的
MessageBox.Show("端口错误","错误");
serialPort1.Open();假如这个串口不存在就执行serialPort1.IsOpen
serialPort1.Write(buffer, 0, 1);其中buffer为发送的数组,第二个代表发送从哪里开始,第三个是发送几个字节。
C#做个串口控制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace 串口控制
{
public partial class Form1 : Form
{
//device 1
const byte DeviceOpen1 = 0x01;
const byte DeviceClose1 = 0x81;
//device 2
const byte DeviceOpen2 = 0x02;
const byte DeviceClose2 = 0x82;
//device 3
const byte DeviceOpen3 = 0x03;
const byte DeviceClose3 = 0x83;
//SerialPort Write Buffer
byte[] SerialPortDataBuffer = new byte[1];
public Form1()
{
InitializeComponent(); //窗口构造
}
private void button1_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) //串口打开就关闭
{
try
{
serialPort1.Close();
}
catch { } //确保万无一失
ovalShape1.FillColor = Color.Gray;
button1.Text = "打开串口";
}
else
{
try
{
serialPort1.PortName = comboBox1.Text; //端口号
serialPort1.Open(); //打开端口
ovalShape1.FillColor = Color.Green;
button1.Text = "关闭串口";
}
catch
{
MessageBox.Show("串口打开失败","错误");
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
ovalShape1.FillColor = Color.Gray;
SearchAndAddSerialToComboBox(serialPort1, comboBox1);
}
private void WriteByteToSerialPort(byte data) //单字节写入串口
{
byte[] Buffer = new byte [2]{0x00, data }; //定义数组
if (serialPort1.IsOpen) //传输数据的前提是端口已打开
{
try
{
serialPort1.Write(Buffer, 0, 2); //写数据
}
catch
{
MessageBox.Show("串口数据发送出错,请检查.","错误");//错误处理
}
}
}
private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox)//serialport目的是传入serialport1,ComboBox MyBox传入下拉框
{ //将可用端口号添加到ComboBox
//string[] MyString = new string[20]; //最多容纳20个,太多会影响调试效率
string Buffer; //缓存
MyBox.Items.Clear(); //清空ComboBox内容
//int count = 0;
for (int i = 1; i < 20; i++) //循环
{
try //核心原理是依靠try和catch完成遍历
{
Buffer = "COM" + i.ToString();
MyPort.PortName = Buffer;
MyPort.Open(); //如果失败,后面的代码不会执行
// MyString[count] = Buffer;
MyBox.Items.Add(Buffer); //打开成功,添加至下俩列表
MyPort.Close(); //关闭
//count++;
}
catch
{
//count--;
}
}
//MyBox.Text = MyString[0]; //初始化
}
private void button2_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceOpen1); //器件一开
}
private void button3_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceClose1); //器件一关
}
private void button5_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceOpen2); //器件二开
}
private void button4_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceClose2); //器件二关
}
private void button7_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceOpen3); //器件三开
}
private void button6_Click(object sender, EventArgs e)
{
WriteByteToSerialPort(DeviceClose3); //器件三关
}
private void button8_Click(object sender, EventArgs e)
{
SearchAndAddSerialToComboBox(serialPort1, comboBox1); //扫描并讲课用串口添加至下拉列表
}
}
}