用C#一步步写串口通信分析解析
c语言心形编程代码的原理及应用

C语言心形编程代码的原理及应用1. 简介C语言是一种高级程序设计语言,拥有广泛的应用领域。
其中,心形编程代码是一种常见的图形编程示例,它通过C语言编写代码在控制台上生成一个心形图案。
本文将介绍心形编程代码的原理及应用。
2. 心形编程代码的原理心形编程代码的原理是通过在控制台上绘制符号字符来生成心形图案。
具体步骤如下:2.1 设置控制台画布首先,需要将控制台的大小设置为适合显示心形图案的尺寸。
可以使用C语言提供的相关函数来获取控制台的大小并设置画布的尺寸。
2.2 绘制心形图案绘制心形图案的过程可以分为两个步骤,分别绘制上半部分和下半部分。
2.2.1 绘制上半部分上半部分的绘制可以通过使用一系列符号字符来实现。
可以根据心形的形状定义一个字符数组,数组中的每个元素表示一行字符。
每行字符的数量和上下两个点之间的距离有关,可以通过调整字符数组的元素来改变上半部分的形状。
2.2.2 绘制下半部分下半部分的绘制与上半部分类似,只需要将上半部分的符号字符按照相反的顺序进行绘制即可。
2.3 显示心形图案绘制完成后,需要将生成的心形图案显示在控制台上。
可以使用C语言提供的输出函数将绘制好的图案输出到控制台。
3. 心形编程代码的应用心形编程代码具有一定的应用价值,可以用于表达情感、制作贺卡等场景。
3.1 表达情感通过生成心形图案,可以用简单的代码表达深深的情感。
将心形编程代码应用于情人节礼物、生日祝福等场景,可以给人一种特殊的感受。
3.2 制作贺卡心形图案可以作为一种简单而特别的贺卡设计元素。
通过在控制台上生成心形图案,可以制作个性化的贺卡,为亲朋好友送上温馨祝福。
3.3 学习图形编程心形编程代码可以作为学习图形编程的一个案例,对初学者来说非常友好。
通过理解和修改心形编程代码,可以熟悉C语言的基本语法和控制台绘图的原理。
4. 总结本文介绍了C语言心形编程代码的原理及应用。
通过在控制台上绘制符号字符,可以生成美观的心形图案。
c语言求n个数的平均值函数调用 -回复

c语言求n个数的平均值函数调用-回复如何使用C语言编写一个函数来计算n个数的平均值。
C语言是一种常用的编程语言,广泛应用于科学计算、嵌入式系统和操作系统等领域。
在C语言中,我们可以使用函数来实现特定的功能。
本文将解释如何使用C语言编写一个函数来计算n个数的平均值。
首先,我们需要定义一个函数原型。
函数原型是指函数的声明,即告诉编译器函数的名称、参数类型和返回值类型。
在本例中,我们的函数名称是average,参数是一个整数数组和数组的长度,返回值是一个浮点数。
以下是函数原型的定义:cfloat average(int array[], int length);然后,我们需要在代码中实现这个函数。
在函数的实现中,我们可以使用一个循环来遍历整数数组,并将所有数字的总和累加起来。
最后,我们将总和除以数组的长度,得到平均值。
以下是average函数的实现:cfloat average(int array[], int length) {int sum = 0;for (int i = 0; i < length; i++) {sum += array[i];}return (float)sum / length;}上述代码中,我们使用了一个变量sum来保存累加的总和。
在循环中,我们使用了一个索引i来遍历整个数组,从而获得数组中的每个元素。
我们将每个元素累加到sum变量中,以计算数组中所有元素的总和。
最后,我们将sum除以数组的长度,得到平均值。
由于C语言中整数相除的结果仍然是一个整数,因此我们需要强制将sum的值转换为浮点数,才能得到精确的结果。
接下来,我们需要在主函数中调用这个average函数来计算n个数的平均值。
在主函数中,我们可以先定义一个数组来存储n个数,然后调用average函数,将数组和数组的长度作为参数传递给它。
以下是主函数的实现:c#include <stdio.h>int main() {int n;printf("请输入要计算平均值的数字个数:");scanf("d", &n);int array[n];printf("请依次输入d个数字:", n);for (int i = 0; i < n; i++) {scanf("d", &array[i]);}float result = average(array, n);printf("平均值为:.2f", result);return 0;}在上述代码中,我们首先使用printf函数打印提示消息,要求用户输入要计算平均值的数字个数。
c语言数位之积

c语言数位之积数位之积是指一个数的各个位上的数字相乘所得到的结果。
在C语言中,我们可以通过一些算法和技巧来计算一个数的数位之积。
本文将介绍几种常见的方法来实现这个功能。
一种简单直观的方法是使用循环和取余运算来逐位提取数字,然后累乘得到最终结果。
具体步骤如下:1. 首先,我们需要定义一个变量来保存结果,初始值设为1,因为任何数乘以1都等于它本身。
2. 然后,我们使用一个循环来逐位提取数字。
循环的条件可以是当输入的数不为0时继续执行。
3. 在循环中,我们使用取余运算(%)来获得每一位上的数字,将其累乘到结果中。
4. 在每次循环结束后,我们将输入的数除以10,以便下一次循环时可以提取下一位的数字。
5. 最后,当循环结束时,我们就得到了输入数的数位之积。
下面是使用C语言编写的示例代码:```c#include <stdio.h>int main() {int num, digit, product = 1;printf("请输入一个正整数: ");scanf("%d", &num);while (num != 0) {digit = num % 10;product *= digit;num /= 10;}printf("数位之积为: %d\n", product);return 0;}```在上面的代码中,我们首先使用`scanf`函数来获取用户输入的数,然后通过循环和取余运算来逐位提取数字并计算数位之积,最后使用`printf`函数将结果输出到屏幕上。
除了上面的方法,我们还可以使用递归来实现数位之积的计算。
递归是一种通过调用自身的方式来解决问题的方法。
具体步骤如下:1. 首先,我们需要定义一个递归函数来计算数位之积。
函数的参数可以是输入的数和当前的乘积,返回值为最终的乘积。
2. 在函数内部,我们首先判断输入的数是否为0,如果是,则返回当前的乘积作为结果;否则,执行下一步。
展示彩色爱心的C语言动态代码

1.引言在计算机编程领域,C语言被广泛应用于系统编程、嵌入式设备控制以及高性能应用程序的开发。
虽然C语言以其简洁高效的特性而闻名,但通常被认为是一门过于底层的语言,不适合实现与视觉效果相关的功能。
然而,我们可以使用C语言动态代码来展示彩色爱心的效果,结合控制台色彩和字符绘制技术,以简洁而又富有趣味性的方式实现这一目标。
2.设置控制台颜色在C语言中,我们可以使用头文件<Windows.h>中提供的一些函数来设置控制台的前景色和背景色。
在展示彩色爱心的代码中,我们将使用这些函数来创建动态效果。
我们需要通过以下代码段来引用所需的功能:#include <Windows.h>之后,我们可以使用以下代码来设置控制台颜色:HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hConsole, color);这里的hConsole句柄用于指定控制台输出,而color参数则用于指定颜色值。
通过修改color参数的值,我们可以实现不同的颜色效果。
3.绘制爱心图案接下来,我们需要通过字符绘制技术来创建爱心图案。
在C语言中,可以使用字符数组来定义图案,并通过遍历数组来打印图案。
以下是一个简单的爱心图案定义示例:char pattern[5][6] = {" ** "," ****","******"," ****"," ** "};这里我们使用一个二维字符数组来定义爱心图案的形状,每个元素表示一个字符或空格。
我们可以根据需要调整图案的大小和形状。
接下来,我们可以使用循环结构来遍历数组,并将每个字符打印到控制台上。
我们可以通过以下代码来实现这一功能:for (int i = 0; i < 5; i++) {for (int j = 0; j < 6; j++) {if (pattern[i][j] == '*') {// 设置颜色SetConsoleTextAttribute(hConsole, color);printf("*");} else {printf(" ");}}printf("\n");}这里,我们使用两个嵌套的循环来遍历爱心图案的二维数组。
c语言逆序输出整数

c语言逆序输出整数逆序输出整数是一种常见的程序设计问题,通常可以通过使用循环和取模运算来实现。
在C语言中,我们可以使用以下代码来实现逆序输出整数:```c#include <stdio.h>void reversePrint(int num) {while (num > 0) {int digit = num % 10;printf("%d", digit);num /= 10;}}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("逆序输出整数为:");reversePrint(num);printf("\n");return 0;}```以上代码中,我们定义了一个`reversePrint`函数,用于逆序输出整数。
函数内部使用了一个循环,每次取出整数的最后一位数字并输出,然后将整数除以10,重复此过程直到整数变为0。
在`main`函数中,我们首先提示用户输入一个整数,然后调用`reversePrint`函数进行逆序输出。
下面,我将对以上代码进行详细解析,并探讨一些与逆序输出整数相关的问题。
**1. 问题的提出**逆序输出整数是一种常见的程序设计问题,它要求我们将输入的整数的各个数字按照相反的顺序输出。
例如,如果输入整数为1234,则逆序输出为4321。
这个问题在实际中有很多应用场景,比如密码学中的数字颠倒、数字翻转等。
**2. 解决方法**为了实现逆序输出整数,我们可以使用循环和取模运算。
具体步骤如下:- 首先,我们定义一个函数`reversePrint`,它的参数是一个整数。
- 在`reversePrint`函数内部,我们使用一个循环来不断取出整数的最后一位数字并输出。
- 每次循环中,我们使用取模运算符`%`来获取整数的最后一位数字,然后使用`printf`函数输出。
温度转换c语言代码

温度转换c语言代码温度转换C语言代码一、引言温度转换是一个常见的计算问题,我们经常需要在不同的温度单位之间进行转换。
本文将介绍如何使用C语言编写一个简单的温度转换程序。
二、程序设计1. 输入温度我们首先需要用户输入待转换的温度值。
可以使用scanf函数来实现用户输入。
例如,我们可以用一个浮点型变量来存储输入的温度值。
2. 单位选择接下来,我们需要用户选择待转换的温度单位。
可以使用printf函数输出菜单供用户选择。
例如,用户可以输入1表示摄氏度,输入2表示华氏度,输入3表示开尔文度。
3. 温度转换计算根据用户的选择,我们可以使用不同的公式来进行温度转换计算。
例如,如果用户选择摄氏度转华氏度,可以使用华氏度= 摄氏度* 9 / 5 + 32的公式进行计算。
4. 输出结果我们需要将转换后的温度值输出给用户。
可以使用printf函数将转换后的温度值输出到屏幕上。
三、代码示例下面是一个简单的温度转换C语言代码示例:#include <stdio.h>int main() {float temperature, converted_temperature;int choice;printf("请输入待转换的温度值:");scanf("%f", &temperature);printf("请选择待转换的温度单位:\n");printf("1. 摄氏度\n");printf("2. 华氏度\n");printf("3. 开尔文度\n");scanf("%d", &choice);switch (choice) {case 1:converted_temperature = temperature * 9 / 5 + 32;printf("转换后的温度为%.2f 华氏度\n", converted_temperature);break;case 2:converted_temperature = (temperature - 32) * 5 / 9;printf("转换后的温度为%.2f 摄氏度\n", converted_temperature);break;case 3:converted_temperature = temperature - 273.15;printf("转换后的温度为%.2f 摄氏度\n", converted_temperature);break;default:printf("请选择正确的选项\n");}return 0;}四、运行示例假设用户输入待转换的温度值为20,选择待转换的温度单位为1(摄氏度),则程序输出转换后的温度为68.00华氏度。
c语言中停车场收费金额计算代码

c语言中停车场收费金额计算代码停车场收费金额计算是一个常见的问题,特别是在城市中心或商业区,停车场的收费是必不可少的。
而在实际生活中,为了准确计算收费金额,我们通常会使用C语言来编写相关的程序。
在C语言中,我们可以使用变量、运算符和控制语句来实现停车场收费金额的计算。
首先,我们需要定义一些变量来存储相关的信息,比如停车时长、收费标准等。
然后,我们可以使用运算符来进行计算,最后通过控制语句来输出计算结果。
在停车场收费计算中,关键的因素之一是停车时长。
通常情况下,我们会根据停车时长来确定收费金额。
假设停车场的收费标准是每小时5元,那么我们可以根据停车时长来计算收费金额。
我们需要定义一个变量来存储停车时长,假设我们将其命名为"parkingTime"。
然后,我们可以使用C语言中的运算符来计算停车时长对应的收费金额。
具体的计算公式是:收费金额= 停车时长* 单价。
根据我们的假设,单价为5元,所以我们可以将公式修改为:收费金额 = 停车时长 * 5。
在C语言中,乘法运算可以使用"*"符号来表示。
接下来,我们可以使用控制语句来输出计算结果。
在C语言中,我们可以使用printf函数来输出结果。
假设我们将输出的内容命名为"totalAmount",那么我们可以使用以下代码来实现输出功能:```cprintf("停车时长:%d小时\n", parkingTime);printf("收费金额:%d元\n", totalAmount);```在上述代码中,%d是C语言中的格式控制符,用于输出整数类型的变量。
通过使用格式控制符,我们可以将变量的值嵌入到输出的字符串中,从而实现输出功能。
除了停车时长,停车场还可能根据其他因素来确定收费金额,比如停车场类型、停车场位置等。
在实际应用中,我们可以根据具体需求来扩展代码,以实现更加复杂的收费计算功能。
c语言三角形面积计算

c语言三角形面积计算C语言是一门广泛使用的计算机编程语言,它被广泛应用于各种领域,包括科学、工程、游戏开发和计算机图形学等。
在学习C语言编程的过程中,我们需要掌握一些基本的数学知识,如三角形的面积计算。
本文将介绍如何使用C语言计算三角形的面积。
一、三角形的面积公式三角形是一个由三条线段组成的图形,其中任意两条线段都可以组成一个角。
三角形的面积是指由三个顶点所组成的平面图形的大小。
计算三角形的面积需要使用以下公式:S = 1/2 * b * h其中,S表示三角形的面积,b表示三角形底边的长度,h表示三角形高的长度。
这个公式是从三角形的底边和高的概念出发推导出来的,因此在计算三角形面积时,需要知道三角形的底边和高的长度。
二、使用C语言计算三角形面积在C语言中,可以使用变量和表达式来计算三角形的面积。
首先,我们需要定义一个变量来存储三角形的底边和高的长度。
例如,我们可以定义两个变量b和h来分别表示三角形的底边和高的长度。
float b, h;接下来,我们需要从用户那里获取三角形的底边和高的值。
可以使用scanf函数来实现:printf('请输入三角形的底边长度:');scanf('%f', &b);printf('请输入三角形的高:');scanf('%f', &h);在获取了底边和高的值之后,我们可以使用上面提到的公式来计算三角形的面积。
可以定义一个变量S来存储计算结果:float S = 0.5 * b * h;最后,我们可以使用printf函数将计算结果输出到屏幕上:printf('三角形的面积为:%.2f', S);这里使用了%.2f来表示浮点数的输出格式,其中.2表示保留两位小数。
三、完整的C语言程序下面是一个完整的C语言程序,用于计算三角形的面积:#include <stdio.h>int main(){float b, h, S;printf('请输入三角形的底边长度:');scanf('%f', &b);printf('请输入三角形的高:');scanf('%f', &h);S = 0.5 * b * h;printf('三角形的面积为:%.2f', S);return 0;}四、总结本文介绍了如何使用C语言计算三角形的面积,包括三角形面积公式、C语言的变量和表达式以及完整的C语言程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我们来看具体的实现步骤。
公司要求实现以下几个功能:1):实现两台计算机之前的串口通信,以16进制形式和字符串两种形式传送和接收。
2):根据需要设置串口通信的必要参数。
3):定时发送数据。
4):保存串口设置。
看着好像挺复杂,其实都是纸老虎,一戳就破,前提是你敢去戳。
我尽量讲的详细一些,争取说到每个知识点。
在编写程序前,需要将你要测试的COM口短接,就是收发信息都在本地计算机,短接的方式是将COM口的2、3号针接起来。
COM 口各针的具体作用,度娘是这么说的:COM口。
记住2、3针连接一定要连接牢固,我就是因为接触不良,导致本身就不通,白白花掉了一大半天时间调试代码。
下面给出主要的操作界面,如下:顺便,我将所有控件对应的代码名字也附上了,相信对初学者来说,再看下面的代码会轻松很多。
控件名字命名的方法是“控件名+作用”的形式,例如“打开串口”的开关按钮,其名字是btnSwitch (btn就是button的简写了)。
我认为这种命名控件的方式比较好,建议大家使用,如果你有好的命名方式,希望你能告诉我!下面我们将各个功能按照从主到次的顺序逐个实现。
(我分块给出代码实现,详细代码见链接:《C#串口通信工具》)一、获取计算机的COM口总个数,将它们列为控件cbSerial的候选项,并将第一个设为cbSerial的默认选项。
这部分是在窗体加载时完成的。
请看代码:(很多信息代码的注释里讲的很清楚,我就不赘述了。
)[csharp]view plaincopyprint?1.//检查是否含有串口2. string[] str = SerialPort.GetPortNames();3. if (str == null)4. {5. MessageBox.Show("本机没有串口!", "Error");6. return;7. }8.9. //添加串口项目10. foreach (string s in System.IO.Ports.SerialPort.GetPortNames())11. {//获取有多少个COM口12. cbSerial.Items.Add(s);13. }14.15. //串口设置默认选择项16. cbSerial.SelectedIndex = 0; //设置<span style="font-size:18px; "><strong>cbSerial的默认选项</strong></span>二、“串口设置”这面我没代码编程,直接从窗体上按照串口信息设置就行。
我们仅设置它们的默认选项,但这里我用到了ini文件,暂时不讲,我们先以下面形式设置默认。
[csharp]view plaincopyprint?1. cbBaudRate.SelectedIndex = 5;2. cbDataBits.SelectedIndex = 3;3. cbStop.SelectedIndex = 0;4. cbParity.SelectedIndex = 0;5. radio1.Checked = true; //发送数据的“16进制”单选按钮(这里我忘了改名,现在看着很不舒服!)6. rbRcvStr.Checked = true;三、打开串口在发送信息之前,我们需要根据选中的选项设置串口信息,并设置一些控件的属性,最后将串口打开。
[csharp]view plaincopyprint?1. private void btnSwitch_Click(object sender, EventArgs e)2. {3.<span style="white-space:pre"> </span>//sp1是全局变量。
SerialPort sp1 = new SerialPort();4. if (!sp1.IsOpen)5. {6. try7. {8. //设置串口号9. string serialName = cbSerial.SelectedItem.T oString();10. sp1.PortName = serialName;11.12. //设置各“串口设置”13. string strBaudRate = cbBaudRate.T ext;14. string strDateBits = cbDataBits.T ext;15. string strStopBits = cbStop.Text;16. Int32 iBaudRate = Convert.ToInt32(strBaudRate);17. Int32 iDateBits = Convert.ToInt32(strDateBits);18.19. sp1.BaudRate = iBaudRate; //波特率20. sp1.DataBits = iDateBits; //数据位21. switch (cbStop.Text) //停止位22. {23. case "1":24. sp1.StopBits = StopBits.One;25. break;26. case "1.5":27. sp1.StopBits = StopBits.OnePointFive;28. break;29. case "2":30. sp1.StopBits = StopBits.Two;31. break;32. default:33. MessageBox.Show("Error:参数不正确!", "Error");34. break;35. }36. switch (cbParity.T ext) //校验位37. {38. case "无":39. sp1.Parity = Parity.None;40. break;41. case "奇校验":42. sp1.Parity = Parity.Odd;43. break;44. case "偶校验":45. sp1.Parity = Parity.Even;46. break;47. default:48. MessageBox.Show("Error:参数不正确!", "Error");49. break;50. }51.52. if (sp1.IsOpen == true)//如果打开状态,则先关闭一下53. {54. sp1.Close();55. }56. //状态栏设置57. tsSpNum.T ext = "串口号:" + sp1.PortName + "|";58. tsBaudRate.Text = "波特率:" + sp1.BaudRate + "|";59. tsDataBits.Text = "数据位:" + sp1.DataBits + "|";60. tsStopBits.Text = "停止位:" + sp1.StopBits + "|";61. tsParity.T ext = "校验位:" + sp1.Parity + "|";62.63. //设置必要控件不可用64. cbSerial.Enabled = false;65. cbBaudRate.Enabled = false;66. cbDataBits.Enabled = false;67. cbStop.Enabled = false;68. cbParity.Enabled = false;69.70. sp1.Open(); //打开串口71. btnSwitch.T ext = "关闭串口";72. }73. catch (System.Exception ex)74. {75. MessageBox.Show("Error:" + ex.Message, "Error");76. return;77. }78. }79. else80. {81. //状态栏设置82. tsSpNum.T ext = "串口号:未指定|";83. tsBaudRate.T ext = "波特率:未指定|";84. tsDataBits.T ext = "数据位:未指定|";85. tsStopBits.T ext = "停止位:未指定|";86. tsParity.Text = "校验位:未指定|";87. //恢复控件功能88. //设置必要控件不可用89. cbSerial.Enabled = true;90. cbBaudRate.Enabled = true;91. cbDataBits.Enabled = true;92. cbStop.Enabled = true;93. cbParity.Enabled = true;94.95. sp1.Close(); //关闭串口96. btnSwitch.Text = "打开串口";97. }98. }四、发送信息因为这里涉及到字符的转换,难点在于,在发送16进制数据时,如何将文本框中的字符数据在内存中以同样的形式表现出来,例如我们输入16进制的“eb 90”显示到内存中,也就是如下形式:或输入我们想要的任何字节,如上面的“12 34 56 78 90”.内存中的数据时16进制显示的,而我们输入的数据时字符串,我们需要将字符串转换为对应的16进制数据,然后将这个16进制数据转换为字节数据,用到的主要方法是:Convert.ToInt32 (String, Int32);Convert.ToByte (Int32);这是我想到的,如果你有好的方法,希望你能告诉我。
下面看代码:[csharp]view plaincopyprint?1. private void btnSend_Click(object sender, EventArgs e)2. {3. if (!sp1.IsOpen) //如果没打开4. {5. MessageBox.Show("请先打开串口!", "Error");6. return;7. }8.9. String strSend = txtSend.T ext;10. if (radio1.Checked == true) //“16进制发送”按钮11. {12. //处理数字转换,目的是将输入的字符按空格、“,”等分组,以便发送数据时的方便(此处转的比较麻烦,有高见者,请指点!)13. string sendBuf = strSend;14. string sendnoNull = sendBuf.Trim();15. string sendNOComma = sendnoNull.Replace(',', ' '); //去掉英文逗号16. string sendNOComma1 = sendNOComma.Replace(',', ' '); //去掉中文逗号17. string strSendNoComma2 = sendNOComma1.Replace("0x", "");//去掉0x18. strSendNoComma2.Replace("0X", ""); //去掉0X19. string[] strArray = strSendNoComma2.Split(' ');20.21.<span style="white-space:pre"> </span>//strArray数组中会出现“”空字符的情况,影响下面的赋值操作,故将<span style="background-color: rgb(255, 255, 255); ">byteBufferLength相应减小</span>22. int byteBufferLength = strArray.Length;23. for (int i = 0; i <<span style="background-color: rgb(255, 255, 255); ">strArray.Length</span><span style="background-color: rgb(255, 255, 255); ">; i++ )</span>24. {25. if (strArray[i]=="")26. {27. byteBufferLength--;28. }29. }30.31. byte[] byteBuffer = new byte[byteBufferLength];32. int ii = 0;<span style="white-space:pre"> </span>//用于给<span style="background-color: rgb(255, 255, 255); ">byteBuffer赋值</span>33. for (int i = 0; i < strArray.Length; i++) //对获取的字符做相加运算34. {35.36. Byte[] bytesOfStr = Encoding.Default.GetBytes(strArray[i]);37.38. int decNum = 0;39. if (strArray[i] == "")40. {41. continue;42. }43. else44. {45. decNum = Convert.ToInt32(strArray[i], 16); //atrArray[i] ==12时,temp == 1846. }47.48. try //防止输错,使其只能输入一个字节的字符,即只能在txtSend里输入“eb 90”等字符串,不能输入“123 2345”等超出字节范围的数字49. {50. byteBuffer[ii] = Convert.ToByte(decNum);51. }52. catch (System.Exception ex)53. {54. MessageBox.Show("字节越界,请逐个字节输入!", "Error");55. return;56. }57.58. ii++;59. }60. sp1.Write(byteBuffer, 0, byteBuffer.Length);61. }62. else //以字符串形式发送时63. {64. sp1.WriteLine(txtSend.T ext); //写入数据65. }66. }五、数据的接收亮点来了,看到这里,如果你还没吐(可能是我的代码比较拙劣!),那么下面的知识点对你也不成问题。