 |
|
#การตัดstringจากserialPort มายัง C# ที่เลขวิ่งจากหลัก หน่วยไปหลักสิบ |
|
 |
|
|
 |
 |
|
#การตัดstring จาก serialPort มายัง C#
สอบถามการตัด string ที่รับค่ามาจาก Serial port หน่อยครับ
นี้คือค่าที่มาจาก Serial port ครับ
32.88#65.71#11/30/14:13:13:6#8#6.14#231.85
Code (C#)
data = serialPort1.ReadLine();
string x = data;
string a,b,c,d,f,g,h,i,j;
//32.88#65.71
a = x.Substring(0, 5);
b = x.Substring(6, 5);
////#11/30/14:13:13:6
c = x.Substring(12, 2);
d = x.Substring(15, 2);
f = x.Substring(18, 2);
g = x.Substring(21, 2);
h = x.Substring(24, 2);
//////////////:30#8///////////////
i = x.Substring(27, 2);
j = x.Substring(30, 1);
ตอนนี้ผมมีปัญหากับการ ตัด ตัว i กับ j ครับ
i คือ วินาทีครับค่าจะมี 0-59 วินาที
ถ้าวินาที รัน 10-59ไม่มีปัญหาครับ แต่ถ้ารันที่
0-9 วินาที ที่ไร มีปัญหาตลอดครับ
เช่น i = 30 ก็คือ 30 วินาที
แต่ ถ้า i= 1 วินาที จริงๆค่าต้องออกเลข1
แต่ผมเขียนให้ตัด2ตัวจาก code i = x.Substring(27, 2); ตัวที่จะตัดครับ //////////////:30#8///////////////เพราะงั้น # ก็เลยติดมาด้วย
ถ้าไม่ตัด2 ตัวเลขค่า 10-59 ก็จะออกอีกแบบครับผมเพราะงั้น
i เลยมี ค่า กับ 1# แทนครับ เป็นแค่ 0-9 รบกวนหน่อยครับตัดเลขที่รันตลอดยังไงดีครับ
Tag : .NET, C#
|
|
 |
 |
 |
 |
Date :
2015-04-06 14:08:58 |
By :
wise1020 |
View :
2406 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนจาก การตัดตามตำแหน่ง
เป็นการหาตำแหน่ง # แล้ว ตัดมาที่ละ ตัวแปร ดีไหมครับ
เมือจำนวนอักษร มันเป็น dynamic ก็ควร ตัดจาก ตัวแบ่ง field แทน
พอดีเจอคำสั่ง split
Code (C#)
data = serialPort1.ReadLine();
string[] xdata = data.Split('#');
string a,b,c,d,f,g,h,i,j;
int x=0, y=xdata.length;
for( x ; x<y; x++){
switch( x ){
case 0: a = xdata[x]; break;
case 1: b = xdata[x]; break;
case 2: c = xdata[x]; break;
case 3: d = xdata[x]; break;
case 4: e = xdata[x]; break;
case 5: f = xdata[x]; break;
case 6: g = xdata[x]; break;
case 7: h = xdata[x]; break;
case 8: i = xdata[x]; break;
case 9: j = xdata[x]; break;
}
}
ผิดพลาดประการใดขออภัยครับ ไมคล่องกับ c#
และเอาเป็นตัวอย้างนะครับ ผมไม่ได้คิดเรืองจำนวน element และ ไม่ได้แบ่ง ว่าเป็น ฟีลด์อะไร
|
ประวัติการแก้ไข 2015-04-06 14:29:20 2015-04-06 14:31:44 2015-04-06 14:34:29
 |
 |
 |
 |
Date :
2015-04-06 14:28:46 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องการแบบนี้ไหมครับ

ถ้าใช่ก็ตามนี้ครับ
Code (C#)
var Char = textBox2.Text;
string[] R = Regex.Split(Char,@"#");
for (int i = 0; i < R.Length; i++)
{
listBox1.Items.Add(R[i]);
}
|
 |
 |
 |
 |
Date :
2015-04-06 14:52:55 |
By :
as76157432 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|