感谢那些回复的人,你的解决方案就在眼前! @ to messageboard ..apology用于重载问题而不是特定的。
我一直在试验我作为解决方案提供的内容,为了保持一致,根据所提供的解决方案,我有以下代码:
var mystr = String.Format("{0},{1:yyyy,M,d,H,m,s},{2:yyyy,MM,dd,HH,mm,ss},{3},{4},{5},{6},{7},{8},{9},{10}",
this.textBox3.Text, //0
this.dateTimePicker1.Value,//1
this.dateTimePicker2.Value,//2
Convert.ToInt32(this.checkBox1.Checked),//3
Convert.ToInt32(this.checkBox2.Checked),//4
Convert.ToInt32(this.checkBox3.Checked),//5
Convert.ToInt32(this.checkBox4.Checked),//6
Convert.ToInt32(this.checkBox5.Checked),//7
Convert.ToInt32(this.checkBox6.Checked),//8
Convert.ToInt32(this.checkBox7.Checked),//9
Convert.ToInt32(this.checkBox8.Checked));//10
textBox1.Text = mystr;
MessageBox.Show("The value entered is: " + mystr , " Alarm DATA", MessageBoxButtons.OK);
点击OK按钮后,我有一串值,即: 88,2015,5,17,22,6,53,2015,05,17,22,06,53,0,0,0,0,0,0,0,0
我将通过串口将这些发送到Arduino,问题在于它们目前的格式。
arduino期望它们的格式(数据类型)与从串行终端窗口发送的格式相同,并且不添加换行符。 (当我键入88,2015,5,17,22,6,53,2015,05,17,22,06,53,0,0,0,0,0,0,0,0时,目前正在工作进入串行终端窗口。
我的问题是如何将变量mystr的值设置/更改为arduino需要的值?
我目前在Arduino上使用Serial.parseint()来接收用逗号分隔的值并将它们加载到变量中。
非常感谢任何帮助。
d
供参考..这是我原来的问题:
我创建了一个Windows窗体,目前有9个复选框(I 不知道这是不是正确的选择。)以及一个按钮和2 文本框。
目前,我以文本框的形式输入日期 YYYY,MM,DD,hh,mm,ss然后我选择复选框值,当时 如果未选中,则选择应返回1。
我意识到这似乎是一个非常基本的问题,但我似乎无法做到 找到我正在寻找的答案。
当我点击按钮时,我希望发生以下情况:
生成/创建单个字符串get。 (最终我会发送这个 通过串口输出。 (不确定这是否是我应该的变量类型 使用,如果可能的话,我会很感激和示例。
字符串/ int / message包含两个日期(或作为unix 时间戳或任一选项)和每个复选框值(a 0或1)<<这是我在努力寻找信息的地方 日期时间选择器)
所以实际的字符串看起来像这样: 2015,4,30,3,0,5,2015,4,30,3,0,10,0,1,0,0(格式为 DATE1,DATE2,checkbox1,checkbox2,checkbox3,checkbox4)
我目前可以使用checkbox.text字段,但我更喜欢 只需将每个值作为零或1来构建我的 串/ INT /消息。
我正在使用C#VS express。
答案 0 :(得分:1)
首先,我建议使用DateTimePicker
输入日期和时间。您可以让它显示您喜欢的任何格式,它将为您处理验证,这可确保用户永远不会输入无效格式或无效值。然后你可以做这样的事情:
var str = String.Format("{0:yyyy,M,d,H,m,s},{1:yyyy,M,d,H,m,s},{2},{3},{4}",
this.dateTimePicker1.Value,
this.dateTimePicker2.Value,
Convert.ToInt32(this.checkBox1.Checked),
Convert.ToInt32(this.checkBox2.Checked),
Convert.ToInt32(this.checkBox3.Checked));
如果你想要更通用的东西,试试这个:
var dates = this.Controls.Cast<Control>()
.OfType<DateTimePicker>()
.Select(dtp => dtp.Value.ToString("yyyy,M,d,H,m,s"));
var bools = this.Controls.Cast<Control>()
.OfType<CheckBox>()
.Select(cb => Convert.ToInt32(cb.Checked).ToString());
var str = String.Join(",", dates.Concat(bools).ToArray());
这适用于任意数量的控件和任何名称。需要注意的是,每组控件的z顺序必须与您希望其输出显示在最终String
中的顺序相匹配。您可以通过在“文档大纲”窗口中拖放来调整z顺序,该窗口可以从“视图”&gt;中打开。其他Windows菜单。
答案 1 :(得分:0)
string s = null;
if (checkbox.checked)
s = "1";
else
s = "0";