PDA

View Full Version : حرفه ای: تبدیل این تابع به C#



hmahdavi921
یک شنبه 30 تیر 1398, 16:10 عصر
سلام
میخوام این کد رو به C#‎‎‎‎‎‎ تبدیل کنم
آرایه ModBusCmdArr :


[1,6,4,49,0,50,56,248,0]


کد vb

Public Function CommandToSend() As String
Dim StrCmd As String = String.Empty


StrCmd = Convert.ToChar(ModBusCmdArr(0)) _
& Convert.ToChar(ModBusCmdArr(1)) _
& Convert.ToChar(ModBusCmdArr(2)) _
& Convert.ToChar(ModBusCmdArr(3)) _
& Convert.ToChar(ModBusCmdArr(4)) _
& Convert.ToChar(ModBusCmdArr(5)) _
& Convert.ToChar(ModBusCmdArr(6)) _
& Convert.ToChar(ModBusCmdArr(7))



Return StrCmd
End Function


خروجی :

ChrW(1) & ChrW(6) & ChrW(4) & "O" & vbNullChar & "28ø"

کد C#‎‎‎‎‎‎ که خودم بهش رسیدم این کده :


public string CommandToSend()
{
string StrCmd = "";


StrCmd = (Convert.ToChar(ModBusCmdArr[0])
+ Convert.ToChar(ModBusCmdArr[1])
+ Convert.ToChar(ModBusCmdArr[2])
+ Convert.ToChar(ModBusCmdArr[3])
+ Convert.ToChar(ModBusCmdArr[4])
+ Convert.ToChar(ModBusCmdArr[5])
+ Convert.ToChar(ModBusCmdArr[6])
+ Convert.ToChar(ModBusCmdArr[7])).ToString();



return StrCmd;
}



خروجی :

444

ظاهرا درست تبدیل شده اما خروجی دو تابع برای مقادیر یکسان متفاوت هست!!!!!!!!!!!!!!!!!!!!!!!!!!!!
خروجی کد vb درست هست !!!!
خروجی متد Convert.ToChar در دو زبان کاملا متفاوت هست !!!
اگر دوستان اطلاعاتی در این مورد دارن لطفا راهنمایی کنند
با تشکر فراوان

barnamenevisjavan
یک شنبه 30 تیر 1398, 17:36 عصر
سلام
میخوام این کد رو به C#‎‎‎‎‎‎‎ تبدیل کنم
آرایه ModBusCmdArr :


[1,6,4,49,0,50,56,248,0]


کد vb

Public Function CommandToSend() As String
Dim StrCmd As String = String.Empty


StrCmd = Convert.ToChar(ModBusCmdArr(0)) _
& Convert.ToChar(ModBusCmdArr(1)) _
& Convert.ToChar(ModBusCmdArr(2)) _
& Convert.ToChar(ModBusCmdArr(3)) _
& Convert.ToChar(ModBusCmdArr(4)) _
& Convert.ToChar(ModBusCmdArr(5)) _
& Convert.ToChar(ModBusCmdArr(6)) _
& Convert.ToChar(ModBusCmdArr(7))



Return StrCmd
End Function


خروجی :

ChrW(1) & ChrW(6) & ChrW(4) & "O" & vbNullChar & "28ø"

کد C#‎‎‎‎‎‎‎ که خودم بهش رسیدم این کده :


public string CommandToSend()
{
string StrCmd = "";


StrCmd = (Convert.ToChar(ModBusCmdArr[0])
+ Convert.ToChar(ModBusCmdArr[1])
+ Convert.ToChar(ModBusCmdArr[2])
+ Convert.ToChar(ModBusCmdArr[3])
+ Convert.ToChar(ModBusCmdArr[4])
+ Convert.ToChar(ModBusCmdArr[5])
+ Convert.ToChar(ModBusCmdArr[6])
+ Convert.ToChar(ModBusCmdArr[7])).ToString();



return StrCmd;
}



خروجی :

444

ظاهرا درست تبدیل شده اما خروجی دو تابع برای مقادیر یکسان متفاوت هست!!!!!!!!!!!!!!!!!!!!!!!!!!!!
خروجی کد vb درست هست !!!!
خروجی متد Convert.ToChar در دو زبان کاملا متفاوت هست !!!
اگر دوستان اطلاعاتی در این مورد دارن لطفا راهنمایی کنند
با تشکر فراوان
به خاطر اینکه توی c# شما + زدی داره نتایج رو جمع میکنه واسه همین خروجی عدد شده
شاید اینجوری اصلاح شه
return Convert.ToChar(ModBusCmdArr[0]).ToString() + Convert.ToChar(ModBusCmdArr[1]).ToString() + Convert.ToChar(ModBusCmdArr[2]).ToString() + Convert.ToChar(ModBusCmdArr[3]).ToString() + Convert.ToChar(ModBusCmdArr[4]).ToString() + Convert.ToChar(ModBusCmdArr[5]).ToString() + Convert.ToChar(ModBusCmdArr[6]).ToString() + Convert.ToChar(ModBusCmdArr[7]).ToString();
اگه همه رشته باشن + دیگه جمع نمیکنه فقط اون متن هارو به هم میچسبونه

hmahdavi921
یک شنبه 30 تیر 1398, 17:57 عصر
ممنون دوست عزیز اما درست نشد
مشکل از تفاوت خروجی Convert.ToChar در vb و C#‎ ناشی میشه!!!