0%

实验目的

生产实习软件部分目的是锻炼学生从事开发计算机应用系统的能力和协同工作的能力。
使学生初步掌握以SQL Server数据库系统为核心,采用C/S结构的计算机应用系统开发方法(用Delphi语言开发),
使学生得到如何进行系统开发的初步锻炼。

PS:
其实,我们并没有使用SQL Server(MySQL),C/S(B/S)结构和Delphi(Python) ^_^
主要是Delphi太过时了。
MySQL是因为有现成的云数据库,就不想搭建了。
B/S是因为html比较熟悉,而且Python写客户端,实在是很难看。

系统结构设计

整个系统包括四部分,分别是数据库服务器、WEB服务器、传输机和前置机。

连接与数据传输

数据库、WEB服务器与传输机之间使用网线连接,传输机与前置机之间使用串口线连接。

数据库与WEB服务器之间,使用MySQL的3306端口通讯,通过在数据库中添加远程受限用户,来访问数据库。

WEB服务器与前置机之间,使用HTTP协议传输数据,用户数据通过JSON封装。

前置机与传输机之间,用JSON封装数据,以换行符('\n')为结束标志。

刷卡流程

  1. 前置机获取卡号信息,并以字符串的方式发送到传输机。
  2. 传输机将卡号以POST方式,发送到WEB服务器。
  3. WEB服务器通过卡号,从数据库获取相关信息。
  4. WEB服务器将卡片信息封装程JSON格式,并返回给传输机。
  5. 传输机将信息通过串口发送给前置机。
  6. 前置机解封数据,并最终显示。
阅读全文 »

上位机和下位机通讯

通讯方式

串行异步通讯

实现原理

串行异步通讯(Asynchronous Data Communication)以字符为单位进行传输,其协议是起止式异步通讯协议,传输字符格式如下图:

实现方式

上位机

通过调用Linux系统的/dev/ttyUSB0文件,实现对串口的读写操作。

  1. 设置串口属性
    • 波特率 115200
    • 无奇偶校验
    • 一个停止位
  2. 将需要发送的数据转换成二进制字符串。包括两个字节,一个为距离,另一个为角度,均用用-128~127表示。
  3. 将转化完成的字符串,通过串口的write方法,写入串口。

下位机

启动一个线程,不断监听串口活动。
当串口监听到起始符号时,通过接收移位寄存器接收串口信息,当接收信息达到1个字节时,将触发串口接收寄存器满事件。
程序对串口接收到的数据进行处理,获取上位机传输的距离和角度信息,并根据信息进行相应的调整机器人的运动姿态。
当串口监听到停止位时,停止接收串口信息,结束本次传输。

阅读全文 »

前言

7月7号左右吧,突然接到了一个陌生的电话,说我过了中国科学院大学的夏令营,问我参不参加,于是,我就在7月18号来到了帝都,开始了我的夏令营之旅。

其实本来没打算会被录取的,因为报名了一个多月了,一点消息都没有。但是最后还是有幸被选上了。

出发

因为网络信息中心这次活动经费不足(主要是北京住宿太贵了,四个人一晚上600),不报销路费,于是,我买了特快T66。

虽然上次蓝桥杯我说再也不做绿皮车了,但是,没钱,还是要坐。

真TMD难受,上车对床是个带小孩的,熊孩子,吵死了,一晚上没怎么睡着,火车司机也好像有问题,各种急刹车!!!

火车还晚点了。10点才到中科院软件园区。报到,安排住宿。

跟舍友超超去吃了个饭,超超的钱包没了。。。。

回来就睡,5点半去集合,简单说了一下夏令营安排,晚上回宿舍,看柯南,睡觉~

阅读全文 »

前言

本来这篇文章打算考试完之后写的,但是我懒了一下,就等到了答辩结束。

这次我用的Python写的,主要是以前只是用过Python,但是没有它做过项目,这次就用Python来试一下。感觉用Python开发还是蛮舒服的,短小精悍的代码,还有跨平台。

任务要求

Create a phaser analysis program, which uses LL(1) method, Operator precedence analyzing or LR(1) method.
The inputs of the program are a text document including a set of productions of the 2º grammar (context free grammar) and the token table generated by Task 1. The out of the program is YES or NO. i.e., the source code string accords with this 2º grammar or the source code string doesn’t accord with this 2º grammar.

要求是用LL(1)或者LR(1)方法,这次读入的是2型文法(词法分析器是3型文法),也就是上下文无关文法。
源代码符合输入的文法,就输出YES,否则就输出NO,并给出错误的位置。

任务分析

在语法分析中,主要完成以下几个操作:

  • First函数:用来求解FIRST集
  • Closure函数:用来求解某个项目的闭包
  • Go函数:将LR(1)的小圆点向后移动一位
  • GetItemSet函数:用来根据一个项目集和一个符号(终结符或非终结符)生成另一个项目集
  • MakeTable函数:用来生成ACTION表和GOTO表

其实这几个函数,在课本中都有叙述,你只需要将课本上用文字描述的语言转换成C++、Java或Python就可以了。下面就一个一个的看看这些函数怎么转换。

阅读全文 »

前言

最近网站的多说系统出了点问题,就是必须要使用https才能请求成功,可能是多说系统升级了吧,于是乎,我就升级了一下自己的服务器,让网站支持了HTTPS,这样传输的信息就安全了,你们访问我的Blog就会更安全,虽然这里不需要登陆什么的,不会泄露你的个人信息。

申请证书

特别说明:现在沃通已经关闭了免费证书的申请,现在可以到腾讯云或者阿里云免费申请证书。我现在使用的是腾讯云的HTTPS证书。

网上很多资料,说证书需要自己去生成,但是生成的证书浏览器是不认可的,尽管可以调整自己的浏览器,添加证书信任,但是其他浏览你网页的人却会得到安全警告(如下图),说你的网站不安全,因此,你需要去第三方CA认证申请一个证书。

我所知道的可以申请免费证书的CA机构有两家,分别是沃通WoSign和StartSSL,沃通是国内的一家机构,而StartSSL是国外的,如果你的网站主要是面向国内用户,建议使用沃通的证书。不过这两家张书所有的主流浏览器都是认可的,也就不会出现上面的安全警告了。

我使用的是沃通的证书,免费两年,到期后可以继续免费续费,相当于永久免费。

阅读全文 »