2021-08-25 15:16:58 +08:00
|
|
|
|
在本篇中,你将可以在手边没有硬件的情况下对pikascript进行上手测试。
|
2021-08-25 15:16:49 +08:00
|
|
|
|
|
2021-08-25 15:16:58 +08:00
|
|
|
|
测试使用keil5的仿真工程,仿真目标板为stm32f103,下载仿真工程即可直接开始测试。
|
|
|
|
|
|
2021-08-25 15:18:11 +08:00
|
|
|
|
## (1) 下载工程
|
2021-08-25 15:16:58 +08:00
|
|
|
|
|
2021-08-25 15:18:11 +08:00
|
|
|
|
进入stm32 demo 仓库
|
2021-08-25 15:21:10 +08:00
|
|
|
|
|
|
|
|
|
(右键在新标签页中打开)
|
2021-08-25 15:17:28 +08:00
|
|
|
|
[pikascript-stm32-demo](../../../../pikascript-demo-stm32)
|
2021-08-25 15:16:58 +08:00
|
|
|
|
|
|
|
|
|
然后下载源码
|
2021-08-25 15:20:11 +08:00
|
|
|
|
|
2021-08-25 15:18:11 +08:00
|
|
|
|
![MJ8Y8RH0P@ILH~_E}TK5Q57](https://user-images.githubusercontent.com/88232613/130744247-2f71ba72-2d1b-49d9-bbb5-4eda334ec912.png)
|
2021-08-25 15:20:11 +08:00
|
|
|
|
(github 页面)
|
2021-08-25 15:18:11 +08:00
|
|
|
|
|
2021-08-25 15:20:11 +08:00
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130744477-e6760afb-99bf-4be0-aa04-8fbe2ea737ec.png)
|
|
|
|
|
(gitee 页面)
|
2021-08-25 15:25:27 +08:00
|
|
|
|
|
|
|
|
|
本篇的测试只需要解压simulation-keil工程即可
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130745409-364d67b8-04a4-45ab-bdd0-c59179419717.png)
|
2021-08-25 15:28:05 +08:00
|
|
|
|
|
|
|
|
|
直接打开工程
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130745821-864038df-d8b0-41d2-97e8-199815d0d57d.png)
|
2021-08-25 15:37:35 +08:00
|
|
|
|
|
|
|
|
|
## (2) 运行仿真工程
|
|
|
|
|
|
2021-08-25 15:39:56 +08:00
|
|
|
|
选择使用仿真器进行调试
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130747706-b912e09f-3f68-495a-a69f-f8f7500b1e4e.png)
|
|
|
|
|
|
|
|
|
|
|
2021-08-25 15:37:35 +08:00
|
|
|
|
编译工程然后进入调试
|
|
|
|
|
![3MT68@ }AWJTGAYJA12VG%V](https://user-images.githubusercontent.com/88232613/130747350-70ffa319-f04d-4f26-a75b-61864a19b8d8.png)
|
2021-08-25 15:41:26 +08:00
|
|
|
|
|
|
|
|
|
打开串口显示面板
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130747952-42073ba1-c4c4-4acb-9495-766cd5731374.png)
|
|
|
|
|
|
2021-08-25 15:43:05 +08:00
|
|
|
|
运行然后查看输出结果
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130748221-53fff9f6-6427-417d-b95a-3fa52a57eeaf.png)
|
2021-08-25 15:46:47 +08:00
|
|
|
|
|
|
|
|
|
## (3) 改改脚本看看
|
|
|
|
|
|
2021-08-25 15:54:38 +08:00
|
|
|
|
用任意编辑器打开main.py,推荐vscode, 没有vscode用记事本打开也可以
|
2021-08-25 15:46:47 +08:00
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130748847-477facfb-e16e-4e0e-8876-d66efd0ae48c.png)
|
2021-08-25 15:47:20 +08:00
|
|
|
|
|
2021-08-25 15:53:04 +08:00
|
|
|
|
以下就是main.py
|
2021-08-25 15:47:20 +08:00
|
|
|
|
``` python
|
2021-08-25 15:53:04 +08:00
|
|
|
|
# main.py
|
2021-08-25 15:47:20 +08:00
|
|
|
|
from PikaObj import *
|
|
|
|
|
import Device
|
|
|
|
|
import PikaStdLib
|
|
|
|
|
|
|
|
|
|
led = Device.LED()
|
|
|
|
|
uart = Device.Uart()
|
|
|
|
|
mem = PikaStdLib.MemChecker()
|
|
|
|
|
|
|
|
|
|
print('hello wrold')
|
|
|
|
|
uart.setName('com1')
|
|
|
|
|
uart.send('My name is:')
|
|
|
|
|
uart.printName()
|
|
|
|
|
print('mem used max:')
|
|
|
|
|
mem.max()
|
|
|
|
|
print('mem used now:')
|
|
|
|
|
mem.now()
|
|
|
|
|
```
|
2021-08-25 15:53:04 +08:00
|
|
|
|
这个脚本使用标准的python3语法,那么如何让这个脚本在单片机里运行呢?
|
|
|
|
|
|
|
|
|
|
事实上,pikascript虽然使用python语法,但原理上更像是java,是半编译半解释型的,pikascript的类和方法是需要编译的,而方法调用和对象新建/销毁则是在运行时解释的。
|
|
|
|
|
|
|
|
|
|
编译pikascript分为两步,第一步是使用pikascript预编译器将.py文件编译为pikascript-api中的.c和.h文件。
|
|
|
|
|
|
|
|
|
|
第二步是使用c编译器编译所有的c工程,然后下载到单片机里即可。
|
|
|
|
|
|
|
|
|
|
双击rust-msc-v0.5.0.exe运行pika预编译器,值得一提的是,这个预编译器是使用rust语言编写的。
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130749341-d12b7985-3685-419c-b9b8-8a09ae6f73d3.png)
|
2021-08-25 15:54:18 +08:00
|
|
|
|
|
|
|
|
|
为了验证编译的效果,我们可以先把pikascript-api文件夹里的文件全部删除,然后再运行编译器,看看能不能自动生成pikascript-api里面的.c,.h文件。
|
|
|
|
|
|
|
|
|
|
注意不要把pikascript-api文件夹给删掉了,只删除里面的文件即可。
|
2021-08-25 15:56:01 +08:00
|
|
|
|
|
|
|
|
|
下面就是pikascript-api生成的.c,.h文件
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130750476-eaffce03-caeb-40b3-9841-550034fa191a.png)
|
|
|
|
|
|
2021-08-25 16:04:29 +08:00
|
|
|
|
接下来我们来修改一下main.py看看效果
|
|
|
|
|
|
|
|
|
|
``` python
|
|
|
|
|
from PikaObj import *
|
|
|
|
|
import Device
|
|
|
|
|
import PikaStdLib
|
|
|
|
|
|
|
|
|
|
led = Device.LED()
|
|
|
|
|
uart = Device.Uart()
|
|
|
|
|
mem = PikaStdLib.MemChecker()
|
|
|
|
|
|
|
|
|
|
print('hello wrold')
|
|
|
|
|
uart.setName('com1')
|
|
|
|
|
uart.send('My name is:')
|
|
|
|
|
uart.printName()
|
|
|
|
|
print('mem used max:')
|
|
|
|
|
mem.max()
|
|
|
|
|
print('mem used now:')
|
|
|
|
|
mem.now()
|
|
|
|
|
|
|
|
|
|
# new code start
|
|
|
|
|
print('add new code start')
|
|
|
|
|
uart.setName('com2')
|
|
|
|
|
uart.printName()
|
|
|
|
|
print('add new code end')
|
|
|
|
|
# new code end
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
我们在main.py下面新加了4行脚本,我们来编译运行看看效果。
|
|
|
|
|
|
|
|
|
|
编译pikascript-api
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130751195-40944d60-7d56-48a9-9f47-cab87d77d5a8.png)
|
|
|
|
|
|
|
|
|
|
编译keil工程然后进入调试
|
|
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130751539-aa0bdb82-750f-4f98-8f6f-02d653dda64a.png)
|
|
|
|
|
|
|
|
|
|
运行然后观察输出
|
|
|
|
|
![image](https://user-images.githubusercontent.com/88232613/130751653-cad627c2-367c-45a6-8c5f-686c7514df3c.png)
|
|
|
|
|
|
|
|
|
|
我们发现多了3行输出,说明编译运行顺利。
|
|
|
|
|
|
|
|
|
|
好了,到这里pikaScript的三分钟快速上手就结束了。
|
|
|
|
|
|
|
|
|
|
想要了解如何部署pikaScript到你的工程里面,请看这里:
|
2021-08-25 16:06:18 +08:00
|
|
|
|
|
|
|
|
|
[2. 十分钟快速部署](../2.%E5%8D%81%E5%88%86%E9%92%9F%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2.md)
|
2021-08-25 16:05:47 +08:00
|
|
|
|
|
|
|
|
|
想要继续学习pikaScript的标准开发流程可以看这里:
|
2021-08-25 16:04:29 +08:00
|
|
|
|
|