|
楼主 |
发表于 2016-4-11 00:57:39
|
显示全部楼层
本帖最后由 canyonliu 于 2016-4-11 14:43 编辑
二,软件控制
程序分为两部分,1,arduino 里的程序用来控制步进电机,
2,C++写了一个console程序来控制arduino并上传打印文件。串口通讯用的是cncomm,这个类很好用,向作者致敬!
先介绍C++的程序功能。
用LaserMarker.exe [commport]启动。
这个是程序运行后的界面。
这个程序里目前有12个命令,下面分别来解释:
1,ready
此命令用来测试arduino是否连接成功,如成功,返回#ready#
如图
2,setpixel [num]
位图打印时,一个像素对应arduino发送多少个脉冲给步进电机控制器。默认设定是100.表示图片里一个像素,arduino发送100个脉冲。
3,setinterval [num]
默认为3,单位为3毫秒,表示arduino发送脉冲的间隔
如下代码,current_pulse_interval就是当前的脉冲间隔,setinterval 就是改变这个值。
while(stepnumber>0){
digitalWrite(pinPul,HIGH);
delayMicroseconds(current_pulse_interval);
digitalWrite(pinPul,LOW);
delayMicroseconds(current_pulse_interval);
stepnumber--;
}
4,setfpm [num]
位图打印就是按行将像素输出,像素分两种,黑点,白点。(激光打印灰度很难控制,暂不考虑),白点就是不打印,可以直接跳过,方法是用最快的电机速度讲激光头移到下一个黑点,但是在一行打印时,第一个碰到的的黑点,很可能由于各种原因没烧黑,这样就会连带后面好多黑点无法烧黑材料。尤其我使用的的是250MW的红光。在每行的第一个黑色像素上需要多停留一些时间,这样能保证此点被烧黑。那么fpm就是first point mutiple(第一点倍数)设定这个参数就是为了让在遇到的第一个黑色像素时脉冲间隔增加一个倍数,默认值设为5,此值跟所用的激光头种类和打印材质有很大关系,我用250MW红光在竹片上打印,这个值需要设为5,才能基本保证每行遇到的第一个黑点被烧黑。
5,laseron
接通激光头电源
6,laseroff
关闭激光头电源
7,xmove [num]
x轴步进电机移动多少像素,注意这里的单位是像素,xmove 10,表示移动10像素,每像素的的脉冲数由setpixel命令设定。
8,ymove [num]
y轴步进电机移动多少像素。
9,tobw [file path]
此命令将指定的24位真彩bmp图片转换成256色灰度bmp图片,格式没变,仅仅是讲像素转换成灰色。最初我希望激光打印能打印灰度,所以做了这个命令,用于将打印出来的跟图片对比,后来发现太困难了。根本无法掌握激光的火候。这个命令对打印用处不大。
10,topf [file path]
这个是将指定的24位真彩bmp图片转换成可打印的lpf格式文件。lpf文件是我定义的一种向arduino通过串口传送的文件。格式是:
前两个字节是图片宽,紧跟着的两个字节是图片高,后面每个字节是两个像素的灰度值。比如
0A 00 02 00 FF FF 00 00 00 FF FF 00 00 00
红色是图片宽10像素
蓝色是图片高2像素
绿色是一行像素值。黑色是另一行像素值。顺序是图片的左下角到右上角。
topf d:/test.bmp
会在同目录下生产一个test.lpf文件。就可以打印了。
11,pf [file path]
这是启动打印的命令,
pf d:/test.lfp
启动后不能停止,想终止打印需要关掉arduino,如果只关掉c++ console程序,arduino会打完当前行后停止。
如图是一个30*4像素的图片打印时的console输出。
12,exit
退出console程序。
源码下载:
这个是c++部分的,用dev c++开发的,不知道vc能不能编译。里面有编译好的lasermarker.exe,下载后可以直接用,记得给串口号作为参数:lasermarker.exe 3
LaserMarker.cpp 主程序
CnComm.h 网上下载的cncomm类,没改动
ClientComm.h 继承cncomm类,用于处理串口发送和文件发送
BmpFile.h bmp文件处理类
arduino部分,原打算可以灰度打印的,后来发现控制火候太难,所以放弃了。这部分代码有个给0-F16个灰度值设定不同脉冲间隔时间的地方,统一设定后,没有删除。大家见谅。另外,没有步进电机也能给arduino装上这个程序,用来参考arduino如何跟pc程序通讯也是可以的。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|