程序代码
- 格式:doc
- 大小:264.50 KB
- 文档页数:47
程序设计源代码程序设计源代码是软件开发过程中的核心组成部分,它包含了实现软件功能的所有指令和逻辑。
源代码通常以文本形式存在,使用特定的编程语言编写,如Java、Python、C++等。
以下是对程序设计源代码的详细讨论。
源代码的结构1. 注释:源代码中的注释用于解释代码的功能,帮助开发者理解代码逻辑。
注释通常不会被编译器执行。
2. 变量:变量用于存储数据,它们可以是整数、浮点数、字符、字符串等。
3. 数据类型:不同的编程语言有不同的数据类型,用于定义变量可以存储的数据种类。
4. 控制结构:包括条件语句(如if-else)和循环语句(如for、while),用于控制程序的执行流程。
5. 函数/方法:函数是一段可重复使用的代码,用于执行特定的任务。
方法通常与对象相关联,是对象的行为。
6. 类和对象:在面向对象编程中,类是创建对象的蓝图,而对象是类的实例。
7. 库和模块:库是一组预先编写好的代码,可以被多个程序共享和使用。
模块是组织代码的一种方式,通常包含一组相关的函数和类。
源代码的编写规范1. 命名规范:变量、函数、类等应该使用有意义的名字,以提高代码的可读性。
2. 格式规范:代码应该遵循一定的格式,如缩进、括号的使用等,以保持一致性和可读性。
3. 代码复用:尽量避免重复代码,通过函数和模块来实现代码的复用。
4. 错误处理:源代码应该包含错误处理机制,以确保程序在遇到问题时能够优雅地处理。
5. 安全性:编写源代码时,需要考虑到安全性,避免潜在的安全漏洞。
源代码的版本控制版本控制是一种记录源代码变更历史的方法,它允许开发者跟踪每次的更改,并在必要时回退到旧版本。
常见的版本控制系统包括Git、SVN等。
1. 分支管理:允许开发者在不影响主分支的情况下,进行新功能的实验和开发。
2. 合并和冲突解决:当多个开发者同时工作在同一个项目上时,版本控制系统提供了合并不同分支的功能,并在出现冲突时提供解决方案。
3. 历史追踪:版本控制系统记录了每次提交的详细信息,包括作者、时间、更改内容等。
十大编程代码随着时代的发展,编程代码已经成为计算机编程的基本要素。
编程语言的不同,带来了很多具有不同特色的编程代码。
有些代码的确可以为程序员在工作中带来便利,提高代码的可维护性和可读性。
下面,我们将看一看十大编程代码。
1. C语言的printf函数print函数是计算机编程中经典的输出函数之一。
它可以用许多不同的方式来输出数据。
在C语言中,printf 函数是最常用的。
它被广泛用于控制台程序的输出,还可以用于将数据写入文件中。
printf函数的采用方式可以让程序员对输出格式进行控制,输出数据可以轻松地转换为字符串、数字等。
2. Python语言的字符串连接符Python语言的字符串连接符(+)是Python程序员经常使用的代码之一,在字符串的处理上使用非常方便。
经过多次实验发现,使用 + 字符串连接符比使用字符串模板引擎性能要好。
3. JavaScript语言的变量类型声明JavaScript是一种动态语言,可以通过变量类型声明让代码更加结构化,更易于阅读。
使用变量类型声明,可以避免在代码阅读中出现意料之外的行为。
4. Java语言的异常处理异常处理是Java程序员必需的代码之一,因为在编写Java代码时,无法避免出现运行时错误。
Java中的异常处理机制可以让程序员清晰地处理异常情况,将代码中出现的错误抛出到主调函数,从而提高系统的健壮性和可靠性。
5. Ruby语言的迭代器Ruby语言的迭代器可以使代码非常简单,它提供了一种方便的方法,可以遍历并处理任何类型的集合。
它使得处理集合对象变得非常容易,也增加了代码的可读性。
迭代器可应用于 array、hash、任何类的方法等程序中。
6. PHP语言的SQL查询PHP是一种流行的服务器端语言。
在处理数据库查询时,PHP可以使用SQL查询来操作数据库中的数据。
PHP语言提供多种处理SQL查询语句的方法。
在PHP程序员中,SQL查询语句已经成为紧密耦合的代码之一。
程序代码及其含义数控机床程编中,经常使用的程序代码有哪些?其含义是什么?在数控机床程序编制中,经常使用的程序指令代码有“G”、“M”。
经常使用的功能代码有“S”、“F”和“T”等。
现将这些常用的指令及功能代码含义介绍如下:(1)G指令G指令是准备功能指令,有字母G和后面紧跟的2位数字组成。
从G00到G99共有100个指令。
该指令的作用主要是指定数控机床的运动方式,并为数控系统插补运算作好准备,因此在程序段中G指令一般位于坐标指令的前面。
常用的G指令有G01(直线插补),G02、G03(圆弧插补),G00(快速点定位),G17、G18、G19(坐标平面选择),G40、G41、G42(刀具半径补偿),G92(预置寄存)及G90、G91(绝对尺寸及增量尺寸程编指令)。
有关G指令的详细规定与含义见表1---3所示。
在代码中有两种代码必须有一些了解,一个是准备工作码(H代码),一个是辅助功能代码(M代码)。
我们国家对G代码和M代码做了规定,即JG3028—83,它与国际标准化组织的ISO—1056—1975E等效。
在G代码与M代码中有不指定和永不指定两类尚未定义的代码。
不指定是暂时尚未指定,以后很可能指定定义,永不指定的代码就把指定的权利安给了机床制造厂家。
不论G代码还是M代码,均用2位数来表示:G00~G99,M00~M99。
共有200个代码。
最近看到有些机床厂家的G代码出现了3位数,这也是一种必然的结果,机床功能愈来愈多,当然代码必然也会增加。
但尚未见到国际标准化组织的新规定。
我们希望更多的分析一下机床厂随机提供的编程资料是非常必要的。
即使对G代码、M代码非常熟悉的人也要研究这些随机资料,看一看是否有一些新的规定,避免编程中存在语法错误。
这些软性的故障,常常在机床使用的初期出现。
表1---3 JB3208—83准备功能G代码代码(1)功能保持到被取消或被同样字母表示的程序指令所代替(2)功能仅在所出现的程序段内有作用(3)功能(4)G00a点定位G01a直线插补G02a顺时针方向圆弧插补G03a逆时针方向圆弧插补G04*暂停G05##不指定G06a抛物线插补G07##不指定G08*加速G08*减速G10~G16**不指定G17c XY平面选择G18c ZX平面选择G19c YZ平面选择G20~G32##不指定代码(1)功能保持到被取消或被同样字母表示的程序指令所代替(2)功能仅在所出现的程序段内有作用(3)功能(4)G33a螺纹切削,等螺距G34a螺纹切削,增螺距G35a螺纹切削,减螺距G36~G39##永不指定G40d刀具补偿/刀具偏置注销G41d刀具补偿一左G42d刀具补偿一右G43#(d)#刀具偏置一正G44#(d)#刀具偏置一负G45#(d)#刀具偏置+/+G46#(d)#刀具偏置+/-G47#(d)#刀具偏置-/-G48#(d)#刀具偏置-/+G49#(d)#刀具偏置0/+G50(d)#刀具偏置0/-G51(d)#刀具偏置+/0G52(d)#刀具偏置-/0G53f直线偏移,注销G54f直线偏移XG55f直线偏移YG56f直线偏移ZG57f直线偏移XYG58f直线偏移XZG59f直线偏移YZG60h准确定位1(精)G61h准确定位2(中)G62h快速定位(粗)G63#攻丝G64~G67##不指定G68#(d)#刀具偏置,内角G69#(d)#刀具偏置,外角G70~G79##不指定G80e固定循环注销G81~G89e固定循环G90j绝对尺寸G91j增量尺寸G92#预置寄存G93k时间倒数,进给率G94k每分钟进给G95k主轴每转进给G96I恒线速度G97I每分钟转数(主轴)G98~G99##不指定注:1.#号:如选作特殊用途,必须在程序格式说明中说明。
c语言程序代码200行下面是一个示例的 C 语言程序,包含大约 200 行代码: c.#include <stdio.h>。
// 定义一个结构体来表示学生信息。
struct Student {。
char name[50];int age;float score;};int main() {。
// 创建一个学生数组,存储多个学生信息。
struct Student students[5];// 通过循环依次输入学生信息。
for (int i = 0; i < 5; i++) {。
printf("请输入第 %d 个学生的姓名,", i + 1); scanf("%s", students[i].name);printf("请输入第 %d 个学生的年龄,", i + 1); scanf("%d", &students[i].age);printf("请输入第 %d 个学生的成绩,", i + 1); scanf("%f", &students[i].score);}。
// 输出学生信息。
printf("\n学生信息如下,\n");for (int i = 0; i < 5; i++) {。
printf("姓名,%s\n", students[i].name);printf("年龄,%d\n", students[i].age);printf("成绩,%.2f\n", students[i].score);printf("\n");}。
return 0;}。
这个示例程序演示了如何使用 C 语言来创建一个学生信息的管理系统。
程序使用了结构体来表示学生的姓名、年龄和成绩,通过循环依次输入多个学生的信息,并最后输出这些学生的信息。
python程序源代码(实用版)目录1.Python 程序源代码概述2.Python 程序源代码的特点3.Python 程序源代码的发展4.Python 程序源代码的应用领域5.Python 程序源代码的未来发展趋势正文一、Python 程序源代码概述Python 程序源代码是一种采用 Python 语言编写的计算机程序代码。
Python 语言作为一门广泛应用于多个领域的编程语言,其源代码具有简洁、易读、高效等特点,深受广大开发者喜爱。
二、Python 程序源代码的特点1.语法简洁:Python 语言的语法简洁明了,使得编写程序变得轻松愉快。
2.易读性强:Python 源代码结构清晰,可读性强,易于维护。
3.高效开发:Python 源代码具有丰富的库和框架支持,可以快速开发出高质量的应用程序。
4.跨平台:Python 源代码支持多种操作系统,如 Windows、Linux、Mac OS 等,具有较高的可移植性。
三、Python 程序源代码的发展Python 语言自 1991 年诞生以来,经历了多次版本更新,其源代码也在不断完善和丰富。
如今,Python 已经成为全球最受欢迎的编程语言之一,其源代码在多个领域都有着广泛的应用。
四、Python 程序源代码的应用领域Python 源代码在众多领域都有广泛应用,如:1.Web 开发:Python 源代码在 Web 开发领域有着丰富的框架支持,如 Django、Flask 等,可以快速构建高质量的 Web 应用。
2.数据分析:Python 源代码在数据分析领域有着强大的支持,如Pandas、NumPy 等库,可以方便地处理和分析海量数据。
3.人工智能:Python 源代码在人工智能领域有着广泛的应用,如TensorFlow、PyTorch 等深度学习框架,可以助力开发者快速开发智能应用。
4.网络编程:Python 源代码在网络编程方面有着丰富的库支持,如Requests、asyncio 等,可以方便地处理网络编程相关任务。
程序员必备的六个代码作为一名程序员,你需要掌握许多不同的编程语言和技术,但是有几个代码是必不可少的。
以下是程序员必备的六个代码:1. Hello World作为编程世界的传统仪式,Hello World 是最简单的程序,它可以帮助你测试你的编译器、解释器或开发环境是否正常工作。
它也是一个很好的起点,让你开始接触编程。
2. Bubble SortBubble Sort 是一种简单的排序算法,它可以将一组元素按照升序或降序排列。
虽然 Bubble Sort 不是最有效的排序算法之一,但是它可以帮助你理解排序算法的基本原理。
3. Binary SearchBinary Search 是一种查找算法,它可以在有序数组中查找指定的元素。
Binary Search 是一个高效的算法,它的时间复杂度为O(log n)。
4. FibonacciFibonacci 是一个经典的算法,它可以计算斐波那契数列。
斐波那契数列是一个无限序列,它的每一项都是前两项的和。
Fibonacci 算法可以帮助你练习递归和动态规划。
5. Quick SortQuick Sort 是一种常用的排序算法,它使用分治法来快速排序一组元素。
Quick Sort 是一种高效的算法,它的时间复杂度为 O(nlog n)。
6. Linked ListLinked List 是一种数据结构,它由一系列节点组成,每个节点都包含一个数据元素和一个指向下一个节点的指针。
Linked List 是一个非常实用的数据结构,它可以用于实现许多算法和数据结构,例如队列、栈和哈希表。
以上六个代码是程序员必备的基础知识,它们可以帮助你建立编程的基础,并成为你编程生涯中的重要参考。
如何制作程序代码在当前数字化时代,编程已经成为一项重要的技能。
许多人开始学习如何编写程序代码,无论是为了解决问题还是为了追求职业发展。
但是,对于初学者来说,制作程序代码可能会显得有些困难。
在本文中,我们将探讨如何制作程序代码的基本步骤和一些技巧。
选择合适的编程语言首先,要制作程序代码,您需要选择一种合适的编程语言。
目前市面上有许多流行的编程语言,如Python、Java、C++等。
每种编程语言都有其特定的用途和优势,因此您需要根据您的需求和兴趣来选择合适的编程语言。
学习基本的编程概念在选择了编程语言之后,您需要学习一些基本的编程概念,如变量、数据类型、循环、条件语句等。
这些是编程的基础,掌握了这些概念之后,您就可以开始着手制作程序代码了。
设计程序逻辑在开始编写代码之前,您需要先设计程序的逻辑。
这包括确定程序要解决的问题、程序的输入和输出以及实现这些功能所需要的步骤。
良好的程序设计有助于编写清晰、可维护的代码。
编写代码一旦程序逻辑设计完成,就可以开始编写代码了。
根据程序设计,逐步编写代码并测试其功能。
编写代码时,要注意代码的格式化和命名规范,这有助于他人阅读和理解您的代码。
调试和优化编写完代码之后,接下来是调试和优化程序。
调试是指查找并修复代码中的错误,确保程序能够正确运行。
优化则是指对程序进行性能优化,使其更快、更高效。
调试和优化是编写程序代码的重要环节,通过不断调试和优化,可以改善程序的质量和性能。
文档编程代码最后,不要忘记为您的程序代码编写文档。
文档可以帮助他人理解您的代码,并且在日后维护和修改代码时也能提供参考。
良好的文档是一个程序员的重要素质,也是一个优秀程序员的标志之一。
在结束时,要记住编写程序代码是一个不断学习和提升的过程。
通过不断实践和学习,您会变得更加熟练并能够编写出高质量的程序代码。
希望本文对您有所帮助,祝您编程愉快!。
小程序编程代码是什么小程序作为一种轻量级的应用程序形式,受到越来越多开发者和用户的青睐。
在小程序的开发过程中,编程代码是至关重要的。
那么,到底小程序编程代码是什么呢?小程序编程代码的基础组成小程序编程代码主要包括以下几个基础组成部分:1. HTMLHTML负责定义小程序页面的基本结构,包括文本内容、链接、图片等。
通过HTML语言,开发者可以搭建小程序页面的布局框架。
<!DOCTYPE html><html><head><title>小程序示例</title></head><body><h1>欢迎使用小程序!</h1><p>这是一个小程序页面的示例内容。
</p></body></html>2. CSSCSS用于定义小程序页面的样式和布局,包括文字字体、颜色、边距等。
通过CSS语言,开发者可以美化小程序页面的外观。
body {font-family: Arial, sans-serif;background-color: #f0f0f0;}h1 {color: #333;}p {margin: 10px 0;}3. JavaScriptJavaScript是小程序中最为重要的编程语言,用于实现页面的交互和动态效果,包括响应用户操作、访问数据等。
开发者通过JavaScript实现小程序的逻辑功能。
document.querySelector('h1').addEventListener('click', function() {alert('您点击了标题!');});小程序编程代码的高级应用除了基础的HTML、CSS和JavaScript,小程序的开发还可以借助框架(如微信小程序框架)和开发工具来提高效率和功能性。
C语言简单计算器程序源代码以下是一个简单计算器程序的C语言源代码,超过1200字: ```c#include <stdio.h>int maichar operator;double num1, num2, result;printf("请输入操作数1: ");scanf("%lf", &num1);printf("请输入操作符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入操作数2: ");scanf("%lf", &num2);switch (operator)case '+':result = num1 + num2;printf("%.2lf + %.2lf = %.2lf\n", num1, num2, result); break;case '-':result = num1 - num2;printf("%.2lf - %.2lf = %.2lf\n", num1, num2, result); break;case '*':result = num1 * num2;printf("%.2lf * %.2lf = %.2lf\n", num1, num2, result); break;case '/':if (num2 != 0)result = num1 / num2;printf("%.2lf / %.2lf = %.2lf\n", num1, num2, result); } elseprintf("错误:被除数不能为0!\n");}break;default:printf("错误:无效的操作符!\n");break;}return 0;```这个程序实现了一个简单的计算器,可以根据用户输入的操作数和操作符进行加、减、乘、除的四则运算,并输出结果。
'函数会传回Windows开机以来所经过的时间,时间单位是1/1000 秒,举例来说,开机经过2分钟,'则传回值等于2*60*1000,timeGetTime 的优点是时间可以精确到1/1000 秒Private Declare Function timeGetTime Lib "winmm.dll" () As LongPrivate Declare Sub CopyMemorySdd Lib "kernel32" Alias "RtlMoveMemory" (ByVal dst As Long, ByVal src _As Long, ByVal size As Long)Private Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Declare Function GetLastError Lib "kernel32" () As LongPrivate Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As LongPrivate Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As LongPrivate Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As LongPrivate Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal wBytes As Long) As LongPrivate Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As LongPrivate Const CREATE_ALWAYS = 2Private Const FILE_ATTRIBUTE_NORMAL = &H80Private Const GENERIC_READ = &H80000000Private Const GENERIC_WRITE = &H40000000Private Const CREATE_NEW = 1Private Const OF_READ = &H0Private Const OF_READWRITE = &H2Private Const OF_CREATE = &H1000Private Const FILE_BEGIN = 0Private Const FILE_CURRENT = 1Private Const FILE_END = 2Dim m_zkfname As StringDim m_bitname As StringDim m_strerror As StringDim m_bolok As BooleanDim m_bolend As BooleanDim changeddata(31) As Byte '字节转换后的一个汉字32字节数组(0-31)Dim lenhznum As Long '定义所有汉字总个数Dim allbytdata() As Byte '定义所有输入汉字转换之后的动态的字节数组Dim firstTime As Double '通讯前的时间Dim sendTime As Double '通讯的时间Dim allbytenum As Long '所有字节数Dim timepc(7) As Byte '存放当前时间Private Sub Check2_Click()If Me.Option1.Value = False And Me.Option2.Value = False ThenMe.Option1.Value = TrueEnd IfEnd SubPrivate Sub Command1_Click() '提取字模Me.Text2 = ""Me.Text2 = changfont16(Text1.Text, 16)End SubPrivate Function changfont16(str As String, cw As Integer) As String '/*16点阵字模提取*/ On Error Resume NextDim filesystemobject As ObjectDim logfilelen As LongDim zkfhandle As LongDim bithandle As LongDim loghznum As LongDim logdataseek As LongDim logi As LongDim throw As LongDim txtstr As StringDim bythzdata() As ByteDim bytdata(32) As ByteDim hzdata(2) As ByteDim cdata(32) As ByteDim chex As IntegerDim i As LongDim j As Longm_bolend = Falsem_bolok = Truelogfilelen = Len(str)logfilelen = logfilelen * 2ReDim bythzdata(logfilelen) As Bytej = 0For i = 1 To logfilelen / 2chex = Asc(Mid(str, i, 1))CopyMemorySdd VarPtr(hzdata(1)), VarPtr(chex), 1 CopyMemorySdd VarPtr(hzdata(0)), VarPtr(chex) + 1, 1 bythzdata(j) = hzdata(0)bythzdata(j + 1) = hzdata(1)j = j + 2Next ilenhznum = Len(Text1.Text) '取汉字个数m = lenhznum * 32 - 1 '计算数组最大下标ReDim allbytdata(m) As Byte '重新定义动态数组If cw = 16 Thenzkfhandle = lopen(App.Path & "\hzk16", OF_READ)If zkfhandle <> -1 ThenFor logi = 0 To logfilelen - 1 Step 2logdataseek = ((CLng(bythzdata(logi)) - &HA1) * 94 + (CLng(bythzdata(logi + 1)) - &HA1)) * 32throw = llseek(zkfhandle, logdataseek, 0)throw = lread(zkfhandle, bytdata(0), 32)Label2.Caption = CStr(logi / 2 + 1) '/*进度*/If Me.out1.Value = True Then '从上到下从左到右If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 5End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 6End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 7End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 8End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out2.Value = True Then '从左到右从上到下If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 1End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 2End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 3End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 4End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out3.Value = True Then '从左到右从下到上If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 9End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 10End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 11End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 12End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out4.Value = True Then '从上到下从右到左If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 13End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 14End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 15End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 16End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out5.Value = True Then '从右到左从上到下If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 17End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 18End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 19End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 20End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out6.Value = True Then '从右到左从下到上If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 21End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 22End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 23End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 24End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out7.Value = True Then '从下到上从左到右If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 25End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 26End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 27End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 28End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)End IfIf Me.out8.Value = True Then '从下到上从右到左If Me.turn1.Value = True Thenchangemode bytdata, changeddata, 29End IfIf Me.turn2.Value = True Thenchangemode bytdata, changeddata, 30End IfIf Me.turn3.Value = True Thenchangemode bytdata, changeddata, 31End IfIf Me.turn4.Value = True Thenchangemode bytdata, changeddata, 32End IfFor k = 0 To 31allbytdata((logi / 2) * 32 + k) = changeddata(k)Next kAddtext txtstr, changeddata, Mid(str, logi / 2 + 1, 1), logi / 2 + Val(Text5.Text)Next logithrow = CloseHandle(zkfhandle)Elsem_strerror = App.Path & "\hzk16" & "不能打开"MsgBox m_strerrorEnd IfEnd Ifchangfont16 = txtstrEnd FunctionPrivate Sub Command4_Click() '发送数据Dim i As IntegerDim str As StringIf MSComm1.PortOpen = True ThenIf cmbMoveMode.ListIndex < 3 ThenIf lenhznum > 0 ThenfirstTime = timeGetTime '返回毫秒数Label14.Caption = "数据发送中..."allbytenum = lenhznum * 32 + 10 '设定要发送和接收的所有字节总和数'超时时间计算:字节数x 每个字节传输的时间注:(9600为波特率)sendTime = allbytenum * 10# / CDbl(cmbBaudRate.Text) '单位为秒以CDbl() 来把字符串转换为数字Timer2.Enabled = TrueMSComm1.InBufferCount = 0 '清空接受缓冲区MSComm1.OutBufferCount = 0 '清空输出寄存器MSComm1.Output = "6" '或Chr(83) '发送握手命令'S'=&H53MSComm1.Output = "Q" '或Chr(81) '发送显示汉字命令'Q'=&H51MSComm1.Output = Chr(cmbMoveMode.ListIndex)MSComm1.Output = Chr(Val(cmbSpeed.Text))MSComm1.Output = Chr(lenhznum) '发送汉字个数MSComm1.Output = allbytdata '发送汉字点阵数据MSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47MSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47MSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47 ElseMsgBox "发送内容为空!", vbInformationEnd IfElsefirstTime = timeGetTime '返回毫秒数Label14.Caption = "数据发送中..."allbytenum = 10 '设定要发送和接收的所有字节总和数sendTime = allbytenum * 10# / CDbl(cmbBaudRate.Text) '单位为秒以CDbl() 来把字符串转换为数字Timer2.Enabled = TrueMSComm1.InBufferCount = 0 '清空接受缓冲区MSComm1.OutBufferCount = 0 '清空输出寄存器MSComm1.Output = "6" '或Chr(83) '发送握手命令'S'=&H53MSComm1.Output = "a" '或Chr(97) '发送显示时间命令'a'=&H61If cmbMoveMode.ListIndex = 4 ThenMSComm1.Output = Chr(cmbMoveMode.ListIndex) '发送时间指令,循环ElseIf cmbMoveMode.ListIndex = 5 ThenMSComm1.Output = Chr(cmbMoveMode.ListIndex) '发送时间指令,对时'str = Format(Now(), "yymmddhhmmss0") & (Weekday(Date, vbMonday))str = Format(Second(Time), "00") & Format(Minute(Time), "00") & Format(Hour(Time), "00") & Format(Date, "DDMM0") & (Weekday(Date, vbMonday)) & Format(Now, "YY")For i = 0 To 6timepc(i) = "&H" + (Mid(str, i * 2 + 1, 2)) '转换成16进制存储顺序为:秒分时日月周年Next i'得到当前时间,转化成数据发出For i = 0 To 6MSComm1.Output = Chr(timepc(i))Next iEnd IfMSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47MSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47MSComm1.Output = "c" '或Chr(71) '发送通讯结束命令'G'=&H47End IfEnd IfEnd Sub'************************************** '功能:为各组个框加载项目'************************************** Private Sub InitData()With cmbBaudRate.AddItem "115200".AddItem "19200".AddItem "9600".AddItem "4800".AddItem "2400".AddItem "1200".Text = "9600"End With' With cmbCom' .AddItem "COM1"' .AddItem "COM2"' .AddItem "COM3"' .AddItem "COM4"' .Text = "COM1"' End WithWith cmbMoveMode.AddItem "左移".AddItem "右移".AddItem "上移".AddItem "静止".AddItem "时间循环".AddItem "对时".ListIndex = 0 '选中第1项End WithWith cmbSpeed.AddItem "1".AddItem "2".AddItem "3".AddItem "4".ListIndex = 0End WithEnd Sub'--------动态设置串口信息串口设置子程序-------------------Sub Comm_reSet(Port As Byte, BaudRate As String)If MSComm1.PortOpen = True Then ' 先判断串口是否打开,如打开则先关闭MSComm1.PortOpen = FalseEnd IfMSComm1.RThreshold = 1 '产生MSComm事件MSComm1.InputMode = comInputModeBinary '采用二进制传输MSComm1.NullDiscard = False 'NULL字符从端口传送到接受缓冲区MSComm1.DTREnable = False 'DTR线无效MSComm1.EOFEnable = False '不寻找EOF符MSComm1.RTSEnable = False 'RTS线无效MSComm1.InBufferCount = 0 '清空接受缓冲区MSComm1.OutBufferCount = 0 '清空传输缓冲区MSComm1.SThreshold = 1 '如果传输缓冲区完全空时产生MSComm事件MSComm1.RThreshold = 1 '产生MSComm事件MSComm1.InBufferSize = 1024 '接收缓冲区默认为1024个字节MSComm1.OutBufferSize = 1024 '发送缓冲区默认为512个字节mPort = Port '设定端口MSComm1.Settings = BaudRate & ",n,8,1" '设置波特率,无校验,8位数据位,1位停止位"MSComm1.PortOpen = True '打开串口End SubPrivate Sub Command2_Click() '打开串口Label14.Caption = "等待发送数据"Call Comm_reSet(Val(Mid(cmbCom.Text, 4, 1)), cmbBaudRate.Text) '串口设置' If MSComm1.PortOpen = False Then' MSComm1.PortOpen = True '打开端口' End IfCommand7.Enabled = TrueCommand2.Enabled = FalseCommand4.Enabled = TruecmbCom.Enabled = FalsecmbBaudRate.Enabled = FalseShape1.FillColor = vbRedEnd SubPrivate Sub Command5_Click() '打开文件对话框,将文件内容读入输入框中Dim inputdata As StringmonDialog1.ShowOpen' monDialog1.Action = 1'效果同.ShowOpenFile = CommonDialog1.FileNameIf File = "" Then'MsgBox "没有选择文件!", vbOKOnly, "文件选择"'Text1.SetFocus'Exit SubElseOpen CommonDialog1.FileName For Input As #1Do While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata ' + vbCrLfLoopClose #1End IfEnd SubPrivate Sub Command7_Click() '关闭串口Label14.Caption = "串口未打开"If MSComm1.PortOpen = True ThenMSComm1.PortOpen = False '打开端口End IfCommand2.Enabled = TrueCommand7.Enabled = FalseCommand4.Enabled = FalsecmbCom.Enabled = TruecmbBaudRate.Enabled = TrueShape1.FillColor = vbBlackEnd SubPrivate Sub Form_Load()Label14.Caption = "串口未打开"If App.PrevInstance Then '避免装载多份应用程序MsgBox "程序已经运行,不能再次装载!", vbInformation 'vbExclamation Unload MeEnd IfOn Error Resume Next '先判断计算机有几个有效串口,通过COMBOBOX选择串口Dim i As LongcmbCom.ClearFor i = 1 To 9 '心理最大值If CheckComIsIn(i) ThencmbCom.AddItem "COM" & icmbCom.Text = "COM1"End IfNext i'加载组合框中的项目InitDataText1.Text = ""Command1_ClickText3 = Len(Text1)Command7.Enabled = FalseCommand2.Enabled = TrueCommand4.Enabled = FalseEnd SubPrivate Function CheckComIsIn(ComIndex As Long) As BooleanOn Error GoTo MyErrorCheckComIsIn = FalsemPort = ComIndexMSComm1.PortOpen = TrueMSComm1.PortOpen = FalseCheckComIsIn = TrueMyError:End FunctionPrivate Sub Text1_Change()Text3 = Len(Text1)If Me.Check1.Value = 1 ThenMe.Timer1.Enabled = FalseMe.Timer1.Enabled = TrueEnd IfEnd SubPrivate Function changemode(indata() As Byte, outdata() As Byte, Mode As Integer) '/*16*16转换字模改变各种取模方式*/On Error Resume NextDim m, k, i As IntegerDim pbyte As ByteDim tmpdata(31) As ByteIf Mode = 1 Then '从左到右从上到下,横向8点左高位m = 0For i = 0 To 31 Step 1 ' /*转换字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 1Next iEnd IfIf Mode = 2 Then '从左到右从上到下,横向8点右高位m = 0For i = 0 To 31 Step 1 ' /*转换字节数据*/pbyte = 0pbyte = bwc(indata(i)) '单字节高低位交换outdata(m) = pbytem = m + 1Next iEnd IfIf Mode = 3 Then '从左到右从上到下,纵向8点上高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 7 + bw(indata(2), i) * 2 ^ 6 + _bw(indata(4), i) * 2 ^ 5 + bw(indata(6), i) * 2 ^ 4 + _bw(indata(8), i) * 2 ^ 3 + bw(indata(10), i) * 2 ^ 2 + _bw(indata(12), i) * 2 ^ 1 + bw(indata(14), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next iFor i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = bw(indata(1), i) * 2 ^ 7 + bw(indata(3), i) * 2 ^ 6 + _bw(indata(5), i) * 2 ^ 5 + bw(indata(7), i) * 2 ^ 4 + _bw(indata(9), i) * 2 ^ 3 + bw(indata(11), i) * 2 ^ 2 + _bw(indata(13), i) * 2 ^ 1 + bw(indata(15), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------上半部结束----------------------------------------------------*/For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 7 + bw(indata(18), i) * 2 ^ 6 + _bw(indata(20), i) * 2 ^ 5 + bw(indata(22), i) * 2 ^ 4 + _bw(indata(24), i) * 2 ^ 3 + bw(indata(26), i) * 2 ^ 2 + _bw(indata(28), i) * 2 ^ 1 + bw(indata(30), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next iFor i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 7 + bw(indata(19), i) * 2 ^ 6 + _bw(indata(21), i) * 2 ^ 5 + bw(indata(23), i) * 2 ^ 4 + _bw(indata(25), i) * 2 ^ 3 + bw(indata(27), i) * 2 ^ 2 + _bw(indata(29), i) * 2 ^ 1 + bw(indata(31), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------下半部结束----------------------------------------------------*/ End IfIf Mode = 4 Then '从左到右从上到下,纵向8点下高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 0 + bw(indata(2), i) * 2 ^ 1 + _bw(indata(4), i) * 2 ^ 2 + bw(indata(6), i) * 2 ^ 3 + _bw(indata(8), i) * 2 ^ 4 + bw(indata(10), i) * 2 ^ 5 + _bw(indata(12), i) * 2 ^ 6 + bw(indata(14), i) * 2 ^ 7outdata(m) = pbytem = m + 1For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 0 + bw(indata(3), i) * 2 ^ 1 + _bw(indata(5), i) * 2 ^ 2 + bw(indata(7), i) * 2 ^ 3 + _bw(indata(9), i) * 2 ^ 4 + bw(indata(11), i) * 2 ^ 5 + _bw(indata(13), i) * 2 ^ 6 + bw(indata(15), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------上半部结束----------------------------------------------------*/For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 0 + bw(indata(18), i) * 2 ^ 1 + _bw(indata(20), i) * 2 ^ 2 + bw(indata(22), i) * 2 ^ 3 + _bw(indata(24), i) * 2 ^ 4 + bw(indata(26), i) * 2 ^ 5 + _bw(indata(28), i) * 2 ^ 6 + bw(indata(30), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next iFor i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 0 + bw(indata(19), i) * 2 ^ 1 + _bw(indata(21), i) * 2 ^ 2 + bw(indata(23), i) * 2 ^ 3 + _bw(indata(25), i) * 2 ^ 4 + bw(indata(27), i) * 2 ^ 5 + _bw(indata(29), i) * 2 ^ 6 + bw(indata(31), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------下半部结束----------------------------------------------------*/ End IfIf Mode = 5 Then '从上到下从左到右,横向8点左高位m = 0For i = 0 To 30 Step 2 ' /*转换偶数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 1For i = 1 To 31 Step 2 ' /*转换奇数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 1Next iEnd IfIf Mode = 6 Then '从上到下从左到右,横向8点右高位m = 0For k = 0 To 30 Step 2 ' /*转换偶数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 1Next kFor k = 1 To 31 Step 2 ' /*转换奇数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 1Next kEnd IfIf Mode = 7 Then '从上到下从左到右,纵向8点上高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 7 + bw(indata(2), i) * 2 ^ 6 + _bw(indata(4), i) * 2 ^ 5 + bw(indata(6), i) * 2 ^ 4 + _bw(indata(8), i) * 2 ^ 3 + bw(indata(10), i) * 2 ^ 2 + _bw(indata(12), i) * 2 ^ 1 + bw(indata(14), i) * 2 ^ 0 outdata(m) = pbytem = m + 1pbyte = 0bw(indata(20), i) * 2 ^ 5 + bw(indata(22), i) * 2 ^ 4 + _bw(indata(24), i) * 2 ^ 3 + bw(indata(26), i) * 2 ^ 2 + _bw(indata(28), i) * 2 ^ 1 + bw(indata(30), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------左半部结束----------------------------------------------------*/For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 7 + bw(indata(3), i) * 2 ^ 6 + _bw(indata(5), i) * 2 ^ 5 + bw(indata(7), i) * 2 ^ 4 + _bw(indata(9), i) * 2 ^ 3 + bw(indata(11), i) * 2 ^ 2 + _bw(indata(13), i) * 2 ^ 1 + bw(indata(15), i) * 2 ^ 0outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 7 + bw(indata(19), i) * 2 ^ 6 + _bw(indata(21), i) * 2 ^ 5 + bw(indata(23), i) * 2 ^ 4 + _bw(indata(25), i) * 2 ^ 3 + bw(indata(27), i) * 2 ^ 2 + _bw(indata(29), i) * 2 ^ 1 + bw(indata(31), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------右半部结束----------------------------------------------------*/ End IfIf Mode = 8 Then '从上到下从左到右,纵向8点下高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 0 + bw(indata(2), i) * 2 ^ 1 + _bw(indata(4), i) * 2 ^ 2 + bw(indata(6), i) * 2 ^ 3 + _bw(indata(8), i) * 2 ^ 4 + bw(indata(10), i) * 2 ^ 5 + _bw(indata(12), i) * 2 ^ 6 + bw(indata(14), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 0 + bw(indata(18), i) * 2 ^ 1 + _bw(indata(24), i) * 2 ^ 4 + bw(indata(26), i) * 2 ^ 5 + _bw(indata(28), i) * 2 ^ 6 + bw(indata(30), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------左半部结束----------------------------------------------------*/For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 0 + bw(indata(3), i) * 2 ^ 1 + _bw(indata(5), i) * 2 ^ 2 + bw(indata(7), i) * 2 ^ 3 + _bw(indata(9), i) * 2 ^ 4 + bw(indata(11), i) * 2 ^ 5 + _bw(indata(13), i) * 2 ^ 6 + bw(indata(15), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 0 + bw(indata(19), i) * 2 ^ 1 + _bw(indata(21), i) * 2 ^ 2 + bw(indata(23), i) * 2 ^ 3 + _bw(indata(25), i) * 2 ^ 4 + bw(indata(27), i) * 2 ^ 5 + _bw(indata(29), i) * 2 ^ 6 + bw(indata(31), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------右半部结束----------------------------------------------------*/ End IfIf Mode = 9 Then '从左到右从下到上,横向8点左高位m = 0For i = 30 To 16 Step -2 ' /*转换偶数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 2Next im = 1For i = 31 To 17 Step -2 ' /*转换奇数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 2Next im = 16For i = 14 To 0 Step -2 ' /*转换偶数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 2Next im = 17For i = 15 To 1 Step -2 ' /*转换奇数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 2Next iEnd IfIf Mode = 10 Then '从左到右从下到上,横向8点右高位m = 0For k = 30 To 16 Step -2 ' /*转换偶数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 2Next km = 1For k = 31 To 17 Step -2 ' /*转换奇数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 2Next km = 16For k = 14 To 0 Step -2 ' /*转换偶数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 2Next km = 17For k = 15 To 1 Step -2 ' /*转换奇数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 2Next kEnd IfIf Mode = 11 Then '从左到右从下到上,纵向8点下高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 0 + bw(indata(18), i) * 2 ^ 1 + _bw(indata(20), i) * 2 ^ 2 + bw(indata(22), i) * 2 ^ 3 + _bw(indata(24), i) * 2 ^ 4 + bw(indata(26), i) * 2 ^ 5 + _bw(indata(28), i) * 2 ^ 6 + bw(indata(30), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 0 + bw(indata(19), i) * 2 ^ 1 + _bw(indata(21), i) * 2 ^ 2 + bw(indata(23), i) * 2 ^ 3 + _bw(indata(25), i) * 2 ^ 4 + bw(indata(27), i) * 2 ^ 5 + _bw(indata(29), i) * 2 ^ 6 + bw(indata(31), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------下半部结束----------------------------------------------------*/ For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 0 + bw(indata(2), i) * 2 ^ 1 + _bw(indata(4), i) * 2 ^ 2 + bw(indata(6), i) * 2 ^ 3 + _bw(indata(8), i) * 2 ^ 4 + bw(indata(10), i) * 2 ^ 5 + _bw(indata(12), i) * 2 ^ 6 + bw(indata(14), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 0 + bw(indata(3), i) * 2 ^ 1 + _bw(indata(5), i) * 2 ^ 2 + bw(indata(7), i) * 2 ^ 3 + _bw(indata(9), i) * 2 ^ 4 + bw(indata(11), i) * 2 ^ 5 + _bw(indata(13), i) * 2 ^ 6 + bw(indata(15), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------上半部结束----------------------------------------------------*/ End IfIf Mode = 12 Then '从左到右从下到上,纵向8点上高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 7 + bw(indata(18), i) * 2 ^ 6 + _bw(indata(20), i) * 2 ^ 5 + bw(indata(22), i) * 2 ^ 4 + _bw(indata(24), i) * 2 ^ 3 + bw(indata(26), i) * 2 ^ 2 + _bw(indata(28), i) * 2 ^ 1 + bw(indata(30), i) * 2 ^ 0outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 7 + bw(indata(19), i) * 2 ^ 6 + _bw(indata(21), i) * 2 ^ 5 + bw(indata(23), i) * 2 ^ 4 + _bw(indata(25), i) * 2 ^ 3 + bw(indata(27), i) * 2 ^ 2 + _bw(indata(29), i) * 2 ^ 1 + bw(indata(31), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------下半部结束----------------------------------------------------*/ For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 7 + bw(indata(2), i) * 2 ^ 6 + _bw(indata(4), i) * 2 ^ 5 + bw(indata(6), i) * 2 ^ 4 + _bw(indata(8), i) * 2 ^ 3 + bw(indata(10), i) * 2 ^ 2 + _bw(indata(12), i) * 2 ^ 1 + bw(indata(14), i) * 2 ^ 0outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 7 + bw(indata(3), i) * 2 ^ 6 + _bw(indata(5), i) * 2 ^ 5 + bw(indata(7), i) * 2 ^ 4 + _bw(indata(9), i) * 2 ^ 3 + bw(indata(11), i) * 2 ^ 2 + _bw(indata(13), i) * 2 ^ 1 + bw(indata(15), i) * 2 ^ 0outdata(m) = pbytem = m + 1Next i'/*------------------------------上半部结束----------------------------------------------------*/ End IfIf Mode = 13 Then '从上到下从右到左,横向8点左高位m = 0For i = 1 To 31 Step 2 ' /*转换奇数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 1Next iFor i = 0 To 30 Step 2 ' /*转换偶数字节数据*/pbyte = 0pbyte = indata(i)outdata(m) = pbytem = m + 1Next iEnd IfIf Mode = 14 Then '从上到下从右到左,横向8点右高位m = 0For k = 1 To 31 Step 2 ' /*转换奇数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 1Next k'/*------------------------------上半部结束----------------------------------------------------*/ For k = 0 To 30 Step 2 ' /*转换偶数字节数据*/pbyte = 0pbyte = bwc(indata(k)) '单字节高低位交换outdata(m) = pbytem = m + 1Next k'/*------------------------------上半部结束----------------------------------------------------*/ End IfIf Mode = 15 Then '从上到下从右到左,纵向8点下高位m = 0For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(1), i) * 2 ^ 0 + bw(indata(3), i) * 2 ^ 1 + _bw(indata(5), i) * 2 ^ 2 + bw(indata(7), i) * 2 ^ 3 + _bw(indata(9), i) * 2 ^ 4 + bw(indata(11), i) * 2 ^ 5 + _bw(indata(13), i) * 2 ^ 6 + bw(indata(15), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(17), i) * 2 ^ 0 + bw(indata(19), i) * 2 ^ 1 + _bw(indata(21), i) * 2 ^ 2 + bw(indata(23), i) * 2 ^ 3 + _bw(indata(25), i) * 2 ^ 4 + bw(indata(27), i) * 2 ^ 5 + _bw(indata(29), i) * 2 ^ 6 + bw(indata(31), i) * 2 ^ 7outdata(m) = pbytem = m + 1Next i'/*------------------------------右半部结束----------------------------------------------------*/ For i = 7 To 0 Step -1 ' /*提取8位数据*/pbyte = 0pbyte = bw(indata(0), i) * 2 ^ 0 + bw(indata(2), i) * 2 ^ 1 + _bw(indata(4), i) * 2 ^ 2 + bw(indata(6), i) * 2 ^ 3 + _bw(indata(8), i) * 2 ^ 4 + bw(indata(10), i) * 2 ^ 5 + _bw(indata(12), i) * 2 ^ 6 + bw(indata(14), i) * 2 ^ 7outdata(m) = pbytem = m + 1pbyte = 0pbyte = bw(indata(16), i) * 2 ^ 0 + bw(indata(18), i) * 2 ^ 1 + _bw(indata(20), i) * 2 ^ 2 + bw(indata(22), i) * 2 ^ 3 + _。