20080316
1.合理释放分配的内存，对设置选取芯片增加了选中列表时回车选取芯片

20080315
1.当选中快速效验时，如果内存中flash或eeprom为空则给出提示

20080314
1.修改了芯片flash,eeprom的16进制内容的处理方式，更合理
2.增加了快速效验选项
3.版本更新为:"测试3.9版"

20080308
1.为检测-自动编程增加了usbaspDisconnect指令

20080307
1.修改了当编程结束延时时点取消不发送usbaspDisconnect指令

20080306
1.点设置熔丝按钮时，确定后，显示的文字顺序不对，现已修正
2.修改 更新-自动编程 功能，使其结束后不再复位目标板，注:不要与"检测-自动编程"一起使用,否则还会复位目标板的

20080305
1.将编程选项中的 读取识别字 放到芯片编程的第一项来操作(为了符合人们的使用习惯)
2.增加可设定且使用进度条表示的编程结束延时(数据库Sys表增加了一个字段用来保存延时值)
3.修改了编程及读取选项中的界面刷新

20080304
1.为兼容改写熔丝延时为100ms左右
2.为"检测-自动编程"增加颜色显示(产品生产时用,软件自动检测更换芯片,然后自动编程)
3.增加"更新-自动编程"功能(注:如要flash的hex文件发生更新以后自动编程，必需选中编程选项中的"自动重装flash",如需eeprom更新后自动编程，必需选中编程选项中的"自动重装eeprom")
4.增加熔丝面板中的"设置"按钮,能用键盘输入16进制熔丝值来设定熔丝
5.在芯片选择面板增加"设置"按钮,能用键盘模糊输入来查询所要的芯片
6.修改版本号为:测试3.5版

20080303
1.增加了写熔丝位延时60ms左右(网友反映M48高位熔丝不能写,是延时不够的问题)
2.增加了 检测-自动编程 当程序检测到装好目标芯片时，自动进行编程，方便用户连续编程多片芯片时使用
3.在熔丝处增加了 设置 按钮,可以设置16进制数来设置熔丝

20080302
1.增加:编程结束延时1秒选项 (注:数据库sys表中的proOpt字段改为长整型)
2.取消自动调速换档时的延时，使其连续发送 (速度更快)
3.发现一个BUG高位及扩展位熔丝写不进去.(由于延时不够)现已修正

20080301
1.信息提示框制作成功并应用到AVR_fighter中，效果很好。

20080229
研究:
1.信息提示框，使其有颜色及最大行数控制。

20080228
1.当上位机不选择自动调速时，data[2] (速度位)输出 0 ,表示固件按默认速度档执行
2.通过研究发现S5x选中Lock1时为禁止外部MOVC指令(而此时程序仍可读出),选中lock2、lock3时才读不出(单个的加密写入与芯片编程中的有一点不一致，现改为一致)
3.USBasp自动调速时间间隔改为30ms左右

20080227
1.修改AVR芯片擦除时间延时200ms
2.修正产品装入时显示的16进制熔丝值
3.修改数据库中表chip的扩展字段为6字节(保存3个十六进制字符)
4.按和314forever网友的约定在和固件发送connect消息时data[2]表示连接速度,data[3]表示芯片类型.data[4],data[5],data[6]表示扩展信息
5.增加了"自动调速"编程选项(data[2]代表SPI速度，取值为1-5，1为最低速，5为最高速；)分5次尝试和固件以不同的速度连接，如有一次成功则以该速度为ISP速度,如都失败则返回进入编程模试错误
6.修改了读写芯片时始终发送大地址指令
7.修改了，片空检察及flash、eeprom效验代码使其更简捷快速、实用

问题:
1.装入产品时显示正确但熔丝的16进制值不正确

20080226
1.修改了写flash时 页大小/2 为 页大小(即不除2)
2.修改写flash时支持>256字节的页面
3.修改了一下进度条的改变方式

问题:
1.M128读flash进度条不动。查一查

想法:
1.增加选上自动调速。如进入编程模试失败后程序循环7次减速后发送USBASP_FUNC_SETSPEED消息尝试重新进入编程模式。

20080224
1.数据库增加5Byte扩展字段(如增加第6Byte则第6Byte太大会出，错因为这一字节在传送函数中表示的传送的字节大小的高8位,因此不能太大,为了方便用户现只保留5Byte)
2.修改了芯片编辑中的一些数据输入设置
3.修正当USBasp未连接而操作时出现找不到usbasp0.dll的错误
4.修改了S5x加密延时

20080223
1.修改擦除操作为:在弹出信息提示同时发出声音提示,操作失败没有声音提示
2.修改了片空检查时,进度条突变的问题
3.增加了各项操作AVR返回指令的检查,使程序操作更为可靠
4.修改了加密选项界面及指令,使其兼容S5x加密选项.
5.修正了S5x加密代码及指令
6.修改了产品记录中对S5x芯片的保存及装入支持

问题:
1.片空检查时由于flash同eeprom各占1/2所以看上去会突变,想办法改一下
2.S5x不能加密,指令不对。
3.在弹出信息提示同时发出声音提示，而不是点击确定后发出提示.

想法:
1.数据库增加6Byte扩展字段,好让用户操作

20080222
1.修改了对于无eeprom芯片,片空检查时,不进行eeprom检查
2.据网友说的修改当编程选项为灰时,相应编程选项应为不选中.BootLoad位为灰色时也改为不选中
3.增加了对芯片编程线程的异常错误处理,更人性化
4.据网友提供,修正S5x芯片擦除时间间隔为500ms
5.增加了eeprom对.eep文件的支持.并修改了读出保存文件的过滤选项,更人性化
6.去掉了各种操作中重检测usbasp连接的代码,使代码更精简
7.修改了各种操作的指令，使不用的指令字节为0x0,看起来更干净
8.发现并修正了刚装入文件与读出文件checkSum值不同的问题

还在研究
1.16进制编辑框全部显示FF的问题

20080221
1.修改了S5x擦除返回指令，使其正确.
2.增加了保存文件时,如文件已存在,显示提示操作框.
3.根据网友说的M48熔丝默认值不对,现已在数据库中改正.

目标:
1.保存文件时,如文件已存在,显示提示操作框.
2.eeprom支持读出.eep类型文件(就是Hex格式),不要求写入.

想法:
1.不要不搞个英文版的?

20080220
1.修正操作失败时，指示灯未灭的错误.
2.由于AVR芯片flash以操作字为单位所以造成写入长度为单数的数据写不进，从而效验出错，现已修正。eeprom操作以字节为单位所以不要改
3.在产品装入时flash及eeprom的效验方法不对，现在修正。
4.和网友的下位机不兼容原来是因为我程序进入编程模式时用的是发送命令字而不是USBASP_FUNC_ENABLEPROG消息,现在修正为消息方式.
5.修改了一下芯片编程的进程,去掉了其中多余的代码。
6.搞到21日凌晨3:26完成了对扩展Hex文件的支持，好累 :).
7.发现usbaspTransmit(0, USBASP_FUNC_SETLONGADDRESS, cmd, cmd, 4);第一个参数为0是传送数据.现改为usbaspTransmit(1, USBASP_FUNC_SETLONGADDRESS, cmd, cmd, 4);

问题:
1.操作失败时，指示灯未灭
2.HEX扩展格式的支持
3.朋友说写M128文件>64K时在0x008000处效验出错。查一下上下位机的大地址支持

想法:
1.在关于中加入帮我测试程序的朋友的名字。

20080219
1.增加每次对USBasp操作结束后执行usbaspDisconnect()函数熄灭指示灯.
2.增加了对新版USBasp固件的支持,新版的VID,PID改变了.
3.数据库中chip中增加了一个字段chipStyle.(AVR:0,S5x:1)并能通过此在USBASP_FUNC_CONNECT时位传送参数到固件,参数为第二个字节
4.增加了对S51,S52的支持.
5.增加了当读写地址太大时自动发送USBASP_FUNC_SETLONGADDRESS消息到固件。
6.修改了一些小小的原来没考虑到的地方。

20080218
问题:
1.公版USBasp上有个指示灯，每次操作时点亮，操作完成时熄灭。即每次操作完成时都要用usbaspDisconnect()函数熄灭指示灯。下版加上这个函数.

20080212
1.为了和所有应用名称相一至,修改应用程序名为AVR_fighter,原来为AVR fighter

20080211
1.修改数据库dsabled字段帮助为:[7]芯片编程类型(1普通,0特殊),[6]保留,[5]EEprom编程与效验,[4]编程熔丝,[3]BLBO,[2,1,0]频率 为"空"默认值255
2.改好disable字段当熔丝位不能编程时toolbar上的熔丝读取与写入按钮还没有禁用的bug.
3.在程序中修改了控制disable字段的第5位编程熔丝同第4位fuse位3按钮应重复了,修改格式为:[7]芯片编程类型(1普通,0特殊),[6]保留,[5]EEprom编程与效验,[4]编程熔丝,[3]BLBO,[2,1,0]频率 为"空"默认值255
4.芯片信息设置中双击芯片名称的lable清空所有输入信息,芯片帮助设置中双击芯片名称前的lable清空所有输入信息
5.改数据库中芯片数据为新的格式
6.修改当时钟全部禁用时显示1MHz~8MHz为全部NONE
7.增加功能:在熔丝位->熔丝低位.熔丝高位.扩展熔丝位 文字上单击显示当前熔丝设置提示


20080209
1.将芯片编辑->时钟效准频频设为正常模式
2.切换芯片熔丝不能操作的问题,通过观察发现是控件的问题，通过在设计时将其全部设为checked=true问题解决。
3.改好了当eeprom编程与效验不可用时toolbar中的读eeprom也不可用

目标:
1.如eeprom编程与效验不可用则toolbar中的读eeprom也应不可用

20080208
1.完成用数据库enable字段的第7位(0~7)来表示芯片编程加密方式1(atmega8类),0(attiny10类),经分析修改了写加密位与加密位读出,编程与读出flash及eeprom应该可以用原来的代码完成就没有修改。
2.经思考：添加、修改、删除芯片后需重新启动应用程序来更新mcu选择框，没改。
3.修改了一下编程、读取、写入的刷新，只刷新optCtrl,原来刷新mainForm会造成toolbar也刷新给人很慢的感觉。
4.将mainForm底色改为纯白色,toolbar改为灰色.这样更美观.
5.将mainFrom窗体设为single类型,并启用最小化按钮(有时很有用).将芯片编辑窗体也设为single类型,禁用最小化和最大化按钮，这样它和mainForm标题栏上都显示了应用程序图标，显得很好看。

问题:
1.芯片编辑->时钟效准频频 不能设为大写UpCase 要不输入不了MHz
2.熔丝扩展位操作有问题:如保存的是atmega64退出后扩展熔丝位可操作,如保存的是m8,进入后换选到atmega64则扩展位不可操作.

20080207
想法:
1.写芯片数据页关键是分析下位机是如何处理上位机传来的数据的。

20080206
目标:
1.昨天仔细研究了一下芯片发现:芯片的flash,eeprom,加密位的编程分为两种情况.1先写入页再写入芯片,普通编程类型(如atmega8...),0直接写入芯片,特殊编程类型(如attiny11...),用chip表中enable的第7位来区分。
2.加入心情故事？

20080205
1.完成 增加 启动Logo编程选项(应用,读取,保存)
2.完成 在产品装入与保存时不涉及 自动重装flash及后面的编程选项数据
3.完成启动Logo 并加入2008奥运元素
4.在logo中加入版权信息
5.在主界面中加入版权信息

目标：
1.修改产品保存与装入时涉及的 编程选项数据，思考了很久，有部分数据不需要被产品所操纵，如:自动重装 flash ....及后面的部分。
2.加入启动Logo 是否加入奥运元素？
3.在编程选项中加入一项 启动Logo 由用户选择是否启用 启动Logo
4.思考：关于的写法，想涉及:单片机及电子常用网站，对我有帮助的网友，软件的权利与义务
5.把自己在ouravr上的几个编程例子写到数据库的产品记录中。(好宣传一下)
6.当添加删除芯片数据后mcu列表框中数据没有及时更新,是否及时更新？

20080204
1.完成把msgbox(NULL ...改为Application->Handle 当前窗体的handle 这样才能是模式窗口，否则操作易出问题
2.完成读出flash及读出eeprom时清空16进制编辑框
3.修改完成 不接usbasp硬件，只出一次提示对话框。(原来要出2次)
  不接usbasp硬件出:没有发现所需的USB设备！
  被编程芯片未接好出:"进入编程模式失败!"
4.完成装入产品时在芯片选择处显示flash及eeprom容量 及装入产品时有求出flash及eeprom的校验和
5.点清空flash及eeprom时在芯片选择处显示flash及eeprom容量为0 及flash及eeprom的校验和为0
6.完成当前芯片与所选择的芯片不同时:出现操作提示
7.由于自制的checkbox控件有时会出现无法点击的情况.所以去掉了其中的DoEnter及DoExit重载函数。
8.加入 芯片操作完成提示音(如出错则不发出提示音,因为会弹出出错对话框,对话框本身在音箱加开的情况下会发出声音来,重复了,所以不要了) 及提示音选项的保存与读取
9.修改了数据库Query控件让它active=false在窗体创建时再打开它(防止不同地方的本程序一直打开原来目录的数据库)
10.加入双击清空选项及操作说明提示信息.
11.想了一下,还是不加入:在选择芯片框上按 上、下 键可循环切换芯片

想法：
1.在选择芯片框上按 上、下 键可循环切换芯片
2.加入操作提示音

20080202
1.修改了数据库加入了两个字段fLen和eLen,分别记录Flash文件和EEprom文件的长度
2.制作成了 产品记录页 。为flash和eeprom页各加了个清空的按钮。修改了很多小地方。

未完成：
1.msgbox(NULL ...改为Application->Handle 当前窗体的handle 这样才能是模式窗口，否则操作易出问题
2.读出flash及读出eeprom时还不能很好清空16进制编辑框
3.装入产品时还没有在 芯片选择处显示flash及eeprom容量
4.装入产品时还没有求出flash及eeprom的校验和
5.如不接usbasp硬件，只出一次提示对话框。(原来要出2次)

想法：
1.数据库能不能加个密码？
2.如当前芯片与所选择的芯片不同，进行操作将出提示？

20080201
1.从12:00~15:50完成了芯片编辑窗口的界面,相关提示及程序制作.
2.从15:50~17:25思考与设记记录模式，原来为产品模式，后经思考改为记录模式，可记录产品及常用单片机网址。想。。。把Hex文件存入数据库？
3.修改了数据库文件加入product表，用来记录产品数据
4.从8:00---半夜1:43研究Hex文件存入数据库.总算有点眉目了。

20080130
1.将项目由原来的avrprogramer改为avr_fighter并新建了一个目录保存
2.将数据库改名为avr_fighter.mdb保存到项目下.并在程序中让系统自动装入程序运行目录下的数据库,而且设置了只能运行一个应用程序进程
3.加了一个"产品模式"选项卡，在工具档加了两个按钮"芯片编辑","关于".并更改了一些图标的图片,按钮的Hint属性,选定了应用程序为一个瓢虫的图标
4.初步设计了芯片编辑form的界面布局

20080128
1.经过昨天的奋战(到半夜2:50多)只到今天总算完成了自定义的checkbox，虽然还不太完美但功能都有了,用0表示选中,1表示未选
2.在数据库中加入了一个字段用来控制:时钟效准,BLTO,fust按钮,EEprom编程,EEprom效验,编程熔丝的可用与不可用.

有待解决:1.Attiny13。。等几种芯片可能出现时钟9.6和4.8的效准，还有1.2等等
3.已解决可能出现不同MHz时钟效准的问题,在数据库中加入cryHz字段,如果为空则为1MHz.2MHz.4MHz.8MHz默认值,如果有值则使用有的频率值，注：各频率之间用"|"隔开

有等解决:芯片选择框能不能直接输入芯片名称后选中芯片

20080125
1.思考了两天，加入了点击设置熔丝时的帮助信息.

20080122
1.加入用户选择的芯片自动保存,用户选择的全部容量自动保存,为了和熔丝选项相统一选中的项为值0,未选中的项设为值1.
2.修改了退出时保存数据有时出问题的bug,原来用的事件是OnDestroy有时会保存不了,现在改为OnClose就OK了
3.经过思考:用户熔丝设置、BootLoad及加密位设值没有必要保存

20080121
1.更改了flash及eeprom文件重装入功能,使得当选中自动重装后在将本程序切换为当前窗口后就能自动重装,原来为在编程时自动重装,感觉不太合理,而切换窗口时自动重装更为实用

20080105
1.解决了装入hex文件时hex文件内容比所选的芯片容量大造成了装入错误。解决办法，如果文件过大则阻止其装入，并弹出提示框。
2.发现并解决了写flash,eeprom会变慢且出错的bug,原因flashLHex copy 到 string中时没有全部清为0xff,造成出现随机数
3.修正了flash,eeprom为空时还能保存为文件，读出后为0xff的bug.解决办法,为空时不允许保存
4.加入功能自动重装flash
5.加入功能自动重装eeprom
6.修改了从芯片读取flash及eeprom时受"全部容量"checkbox控制并加入了读取完后显示校验值
7.修改了计算当前芯片容量时有时会发生错误的bug
8.修改了校验时受"全部容量"checkbox而出错的bug

目标：
1.用户选项设置的保存
2.上次打开文件路径的保存
 
晚上22:00后又加入了:
1.上次打开文件路径的保存
2.用户编程选项设置的保存

目标:
1.bootload及加密位，熔丝位，全部容量设置的保存

20071231
1.完成了flash,eeprom中数据按字节求和的效验字节显示(所有不为0xff的字节加起来的unsigned short int 16进制值)
2.完成了读取flash及eeprom文件路径的显示(且长路径变为短路径)

注意：当选择m8芯片而打开m32的hex文件如果文件较大则会出错，要用异常机制处理。(或计算打开的字节数处理)

20071212
1.完成了bin文件的打开与保存功能

20071208
1.完成了flash,eeprom的显示全部复选框功能，它如果打勾表示显示全部flash,eeprom内容，如不选中表示只显示实际的flash,eeprom内容
2.完成了flash,eeprom输入地址跳转功能(跳到某一地址显示)
3.修改了读取Hex文件时容量会发生错误的bug(因为可能Hex装入的地址不是连续的,导致计算flash容量时不对)
4.完成了flash,eeprom的Hex文件的存盘功能
5.修改了flash,eeprom存盘时最后一行数据会出错的bug.(存盘完成)

目标:
1.bin文件的打开与保存
2.编程选项中：自动重装flash,自动重装eeprom
3.是否加入装入文件被修改的自动识别
4.保存当前全部设置选项,以便下次打开程序时不用再设置
5.完善数据库中的芯片内容
6.加入一键搞定功能
7.加入加密ID号写入？

20071129
1.完成了编程选项中的:编程熔丝位,锁定芯片,读识别字功能
2.完成了芯片编程计数功能
3.修改,增加了flash及eeprom HEX文件内容面板中的选项

20071117
1.做好了编程选项中的 片空检查,效验flash,效验eeprom.
2.由于M128的flash为131072>uint范围,所以改flashSize为ulong型

20071111
1.做好了选取芯片时自动改变熔丝名称及默认值
2.芯片特征字和时钟效准值用一个按钮读取
3.写好了恢复熔丝默认值按钮
4.加入了编程，写熔丝位时判断当前芯片是不是和所选的相同，由用户决定是否继续操作
5.修改了读取flash及eeprom时没有刷新mainForm而造成的程序停滞假象。

20071110
加入了数据库 chipData.mdb
加入了选择芯片时自动改变芯片特征号和芯片大小功能。
下单买了Top2004编程器和两块PIC16F877A芯片

20071107
加入了用鼠标点选熔丝位选项时，顶部的熔丝位16进制值自动相应发生改变

20071028
花了一上午，做好了芯片编程时用户取消操作功能

20071027
1.加入芯片写eeprom功能
2.发现还应点选熔丝位时，熔丝位上的16进制数相应发生改变

20071026
加入芯片写flash功能(注写前如果未擦除则读出写入的数据可能不对，这是由AVR flash编程特性决定的，AVR编程只能将"1"变成"0"而不能将"0"变成"1",而擦除则全部变成"1"

20071006
确定了flash及eeprom显示用其芯片的全部空间
当选择好芯片后flash及eeprom全部空间显示未编程的0xff

20071005
加入了写熔丝位功能

20071004
加入了读熔丝位的功能

20071002
加入了BootLoad及加密位的读出写入功能

//AVR_fighter 编程器 usbasp上位机