求救高手指点...在F10下可以写出结果,,在F5下就不出来结果了啊...

gaara777 2010-09-20 03:41:04
一个单击时间.
private void button2_Click(object sender, EventArgs e)
{
Thread.Sleep(100);
Transmit();
}
上面调用此方法
public void Transmit()
{
Byte[] Send = new Byte[1];
Send[0] = 0xAA;
serialPort1.Write(Send, 0, 1);
Byte[] SendBy = new Byte[24];
byte Sum = 0;
SendBy[0] = 0x01;
SendBy[3] = 0x07;
for (int i = 0; i < 24; i++)
{
Sum = (byte)(SendBy[i] + Sum);
}
SendBy[23] = Sum;
this.serialPort1.Write(SendBy, 0, 24);
}
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = System.DateTime.Now.ToString("HH:mm:ss");
byte[] goor = new byte[serialPort1.BytesToRead];
serialPort1.Read(goor, 0, serialPort1.BytesToRead);
string boog = BitConverter.ToString(goor).Trim();
boog = boog.Replace("-", "");
Latestdata(boog);
}
public void Latestdata(string boog)
{
try
{
if (boog.Length > 4)
{
if (boog.Substring(0, 2) == "55")
{
string poor = boog.Substring(4, boog.Length - 4);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 6), 16).ToString;
textBox2.Text = poor;
}
}
else if (boog.Substring(0, 2) == "FE")
{
string poor = boog.Substring(2, boog.Length - 2);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 4), 16).ToString();
textBox2.Text = poor;
}
}
}
}
catch
{
MessageBox.Show("请重新读出数据!","系统提示");
}
}
...全文
153 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaara777 2010-09-20
  • 打赏
  • 举报
回复
可以了啊,,自己搞好了啊。.要多睡下才可以啊..Thread.Sleep(5000);
gaara777 2010-09-20
  • 打赏
  • 举报
回复
不行啊,,高手...那里放一个断点的话就会没有响应啊。...
cactus123456 2010-09-20
  • 打赏
  • 举报
回复
private void timer1_Tick(object sender, EventArgs e)
{
//F5运行前这一行放个断点
label2.Text = System.DateTime.Now.ToString("HH:mm:ss");

你F5运行,button2 按后,会断到断点处,然后再F10运行看看
gaara777 2010-09-20
  • 打赏
  • 举报
回复
嘿嘿,,又是你啊,,怎么称呼...谢谢你啊,,,高手...感觉还是不行啊....
cactus123456 2010-09-20
  • 打赏
  • 举报
回复
想了想timer中的
//===================
while(serialPort1.BytesToRead==0)
{
Thread.Sleep(100);
}
//===================
应该去掉
cactus123456 2010-09-20
  • 打赏
  • 举报
回复
private void button2_Click(object sender, EventArgs e)
{
//=======================
timer1.Interval = 1000;
timer1.enable=false;
//=======================
Thread.Sleep(100);
Transmit();
//=======================
timer1.enable=true;
//=======================
}
cactus123456 2010-09-20
  • 打赏
  • 举报
回复
//===================
中间的代码是我加的,你试试
//===================

public void Transmit()
{
Byte[] Send = new Byte[1];
Send[0] = 0xAA;
serialPort1.Write(Send, 0, 1);
Byte[] SendBy = new Byte[24];
byte Sum = 0;
SendBy[0] = 0x01;
SendBy[3] = 0x07;
for (int i = 0; i < 24; i++)
{
Sum = (byte)(SendBy[i] + Sum);
}
SendBy[23] = Sum;
//====================
Thread.Sleep(100);
//=====================
this.serialPort1.Write(SendBy, 0, 24);
}





private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = System.DateTime.Now.ToString("HH:mm:ss");
//===================
while(serialPort1.BytesToRead==0)
{
Thread.Sleep(100);
}
//===================
byte[] goor = new byte[serialPort1.BytesToRead];
serialPort1.Read(goor, 0, serialPort1.BytesToRead);
string boog = BitConverter.ToString(goor).Trim();
boog = boog.Replace("-", "");
Latestdata(boog);
}
public void Latestdata(string boog)
{
try
{
if (boog.Length > 4)
{
if (boog.Substring(0, 2) == "55")
{
string poor = boog.Substring(4, boog.Length - 4);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 6), 16).ToString;
textBox2.Text = poor;
}
}
else if (boog.Substring(0, 2) == "FE")
{
string poor = boog.Substring(2, boog.Length - 2);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 4), 16).ToString();
textBox2.Text = poor;
}
}
}
}
catch
{
MessageBox.Show("请重新读出数据!","系统提示");
}
}
gaara777 2010-09-20
  • 打赏
  • 举报
回复
还是不行啊,,,
gaara777 2010-09-20
  • 打赏
  • 举报
回复
改过,,但是还是不行啊...是不是漏了什么???
  • 打赏
  • 举报
回复
对端口不熟,不过你可以看看是不是每次timer事件里面接收的数据都被刷新了,如果是这么的话,那么你就要考虑下读取机制了
  • 打赏
  • 举报
回复
//一个单击时间.
private void button2_Click(object sender, EventArgs e)
{
Thread.Sleep(100);
Transmit();
}
//上面调用此方法
public void Transmit()
{
Byte[] Send = new Byte[1];
Send[0] = 0xAA;
serialPort1.Write(Send, 0, 1);
Byte[] SendBy = new Byte[24];
byte Sum = 0;
SendBy[0] = 0x01;
SendBy[3] = 0x07;
for (int i = 0; i < 24; i++)
{
Sum = (byte)(SendBy[i] + Sum);
}
SendBy[23] = Sum;
this.serialPort1.Write(SendBy, 0, 24);
}
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = System.DateTime.Now.ToString("HH:mm:ss");
byte[] goor = new byte[serialPort1.BytesToRead];
serialPort1.Read(goor, 0, serialPort1.BytesToRead);
string boog = BitConverter.ToString(goor).Trim();
boog = boog.Replace("-", "");
Latestdata(boog);
}
public void Latestdata(string boog)
{
try
{
if (boog.Length > 4)
{
if (boog.Substring(0, 2) == "55")
{
string poor = boog.Substring(4, boog.Length - 4);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 6), 16).ToString;
textBox2.Text = poor;
}
}
else if (boog.Substring(0, 2) == "FE")
{
string poor = boog.Substring(2, boog.Length - 2);
if (poor.Substring(18, 2) != "00")
{
poor = poor.Substring(14, 6).ToString();
textBox2.Text = poor;
}
else
{
poor = Convert.ToInt32(poor.Substring(14, 4), 16).ToString();
textBox2.Text = poor;
}
}
}
}
catch
{
MessageBox.Show("请重新读出数据!","系统提示");
}
}


好头大看得
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
Thread.Sleep(100);这句话
修改为:




Thread.Sleep(1000);
这样试试,或是
int tick = Environment.TickCount;
while(Environment.TickCount-tick<1000) Application.DoEvents();
gaara777 2010-09-20
  • 打赏
  • 举报
回复
怎么没人知道???
gaara777 2010-09-20
  • 打赏
  • 举报
回复
timer1_Tick是不是根本没有运行到单击事件里...
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真分析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比分析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 修改自己电脑的OEM信息及产品ID 本文主要讲述了如何修改自己电脑的OEM信息及产品ID,以拥有一个跟正版一样的显示效果。 文章共分为两种方法介绍了如何修改OEM信息,分别是通过软件进行修改和手动修改注册表信息。 方法一:通过软件进行修改 软件可以帮助用户快速地修改OEM信息,使用非常简单,只要选择想要修改到的厂商就可以了。 然后在高级选项中选择是否要在开始菜单中显示OEM图标和厂商信息。 通过以上步骤,用户的电脑就能拥有一个跟OEM版本一样的信息了! 方法二:手动修改注册表信息 手动修改注册表信息需要用户具备一定的计算机知识和技能。 用户需要上网搜索一张OEM logo或者从另外一台电脑上复制一张logo到自己的电脑上。 然后,用户需要找一个图标文件命名为 OEMLINKICON.ICO,作为支持信息之前的那个小图标。 接下来,用户需要修改个人信息,打开注册表编辑器,搜索到“RegisteredOwner”和“RegisteredOrganization”,这两样分别指注册者姓名和注册者单位,修改成自己的就可以了。 然后,用户需要制作“厂商、电脑型号”和“技术支持信息”(如果你的电脑有的话)。 新建一个文本文档,输入[Version]Microsoft Windows Whistler EditionWinVer=5.01[General]Manufacturer=xx(厂商)有限公司Model=xx 系列电脑[Support Information],这是“技术支持信息”的内容。 Line1=""Line2=""Line3=""Li...
内容概要:本文介绍了一项关于“风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真”的技术研究,重点探讨虚拟同步发电机(VSG)控制策略在风力发电与储能系统联合并网中的应用。通过Simulink搭建风储协同动态模型,引入VSG控制以模拟传统同步发电机的惯性与阻尼特性,有效提升系统在电网扰动下的频率稳定性与电能质量。该仿真系统可用于分析风储系统的功率协调控制、动态响应特性及并网稳定性,适用于高比例可再生能源接入背景下的新型电力系统研究与优化设计。; 适合人群:具备电力系统、自动控制或新能源等相关专业背景的研究生、科研人员,以及从事风电并网、储能系统开发与电力电子控制的工程技术人员。; 使用场景及目标:①开展风储联合并网系统的建模与动态仿真研究;②验证VSG控制策略对系统稳定性的提升效果;③用于高校教学演示、科研项目中的VSG原理分析与性能评估;④支持学术论文复现、课题创新及先进控制算法的开发与测试; 阅读建议:建议使用者熟悉Simulink建模流程及电力电子变换器控制原理,结合提供的仿真模型进行实操演练,重点关注VSG关键参数(如虚拟惯量、阻尼系数)对系统动态性能的影响,并可进一步拓展至多机并联、孤岛/并网模式切换等复杂运行工况的研究。
代码转载自:https://pan.quark.cn/s/fc0302cd30d9 Vultr root密码重置完全指南:3种方法解决忘记密码的困境 有没有经历过这种崩溃瞬间——深夜登录服务器,SSH连接上了,却发现密码怎么都对不上? 或者刚恢复了一个快照,发现原来的root密码直接失效了,整个人懵在那里…… 别慌,这不是你一个人的问题。 Vultr用户论坛里三天两头就有人在问怎么重置root密码,而且不同系统、不同场景,处理方式还不一样。 这篇文章把所有情况都整理了一遍,照着做基本都能解决。 -- 为什么Vultr的root密码会"失效"? 先搞清楚为什么会发生这种事,才不会下次踩同一个坑。 常见原因大概有这几种: 手动改过密码,但后来忘了——这是最普遍的情况,登录SSH后用改了新密码,结果时间一长就忘了是什么。 从快照恢复后密码失效——Vultr的快照功能很好用,但有时候恢复镜像之后,VPS的root密码会变成镜像里的原始密码,跟你后来设置的完全不同。 VPS系统脚本导致的密码无效——某些自动化部署脚本会在启动时随机生成或清空密码,结果你连知道密码是什么的机会都没有。 新开实例忘记复制初始密码——Vultr在开通VPS后会在控制台显示一次随机生成的初始密码,如果当时没有保存,后来就麻烦了。 知道原因之后,我们来看具体的解决方法。 -- 方法一:知道旧密码的情况下直接修改 这是最简单的情况。 你还能登进去,只是想换一个更好记的密码。 通过SSH修改(推荐,最快) 打开终端,连接到你的服务器: bash ssh root@你的VPS_IP地址 登录成功后,直接输入: bash passwd 系统会要求你输入当前密码,然后两次输入新密码。 输入新密码时屏幕不会显示任何字符...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧