我有这个程序正在从textbox
读取测试字符串并将其转换为一个字节数组,该数组要将数据显示在屏幕上。我越走越近了。代码当前可以拉取文本,将其转换为char数组,然后将字节数组中的零替换为来自2维数组的有用数据,该数组包含5位字母表的所有字母。我有一个问题。代码似乎只运行一次。如果我第二次单击该按钮,最终会出现“未处理的indexOutOfRange异常”。此外,它似乎一次只能用于一个字母
EX:如果我输入“A”,它会显示,但如果我输入“AA”,我会得到同样的错误。 这是WordArray []
byte[,] Letters = new byte[18, 5] { { 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 },
{ 63, 72, 72, 63, 0 },
{ 127, 73, 73, 54, 0 } };
以下是click_button
方法:
int Aindex = 0;
int LettersIndex = 0;
private void SendButton_Click(object sender, EventArgs e)
{
WordIndex = 0;
if (Aindex > 0)
{
Aindex = 0;
}
string CurrentTextString = textBox1.Text;
char[] charArray = CurrentTextString.ToCharArray();
if (textBox1.Text == "")
{
}
else
{
foreach (char c in charArray)
{
int index = 0;
CharAsciiArray[index] = Convert.ToChar((Convert.ToInt32(c)));
textBox2.Text += CharAsciiArray[index] + " ";
charCount++;
index++;
}
for (int NumberofBytes = 0; NumberofBytes < charCount; NumberofBytes++)
{
LettersIndex = 0;
// int currentChar = CharAsciiArray[index] - 65;
//textBox2.Text += currentChar;
int currentCharAscii = (CharAsciiArray[Aindex]);
int currentChar = currentCharAscii - 'A';
for (int NumberofBits = 0; NumberofBits < 5; NumberofBits++)
{
// textBox2.Text += currentChar;
WordArray[WordIndex + 3] = Letters[currentChar, LettersIndex];
textBox2.Text += WordArray[WordIndex] + " ";
LettersIndex++;
WordIndex++;
}
Aindex++;
}
SendingData = true;
//SendNextByte();
serialPort1.Write(WordArray, 0, WordArray.Length);
}
}
答案 0 :(得分:0)
在以下循环中
foreach (char c in charArray)
{
int index = 0;
CharAsciiArray[index] = Convert.ToChar((Convert.ToInt32(c)));
textBox2.Text += CharAsciiArray[index] + " ";
charCount++;
index++;
}
您显然希望在每次迭代时增加索引,但每次都将索引重置为0。
除此之外,请考虑在命名变量时要遵循的模式。例如:
为什么AIndex
不是AnIndex
,您如何命名下一个索引? AnotherIndex
?它需要是全球性的吗?为什么charArray
以小写c开头,NumberOfBytes
以大写N开头?编写代码就像你必须向你的妻子/丈夫(谁知道?)解释它一样,并且维护/调试会更容易。