家里橱柜的维修

家里的橱柜就是普通的所谓精钢门,这种就是中间一个框是玻璃材质让后四周的铝合金配合塑料的角码组合起来的结构,应该说属于比较低端的成本很低。这样也就是说明了质量就不咋滴了。所有东西会坏的原因都是因为质量不好————沃兹基硕德。

小孩子比较皮自己吊在门上玩,结果角码坏了,小朋友掉下来还把脸划伤了,很难受。

但是东西坏了总是需要修啊,我问了装橱柜的人,告诉我说比较难修,这就有点搞笑了,总不能就这样吧,看来只能自己出手了,于是我就只能动用万能的淘宝了。其实这个东西开始我都不知道叫什么,而且这种东西属于很偏门的,卖家也很少费了好几分钟才找了一家有这种东西,卖家很专业我只用那个卡尺卡出一个尺寸,就可以给到我合适的东西。

东西回来就要开始装了,话说老板的保证很卡哇伊。

拆……

买的很多,因为分左右。各个角的都不一样,质量不好,坏是肯定的了,所以买多点备用。同时这个最好是配合免钉胶使用,我这里忘了拍了,但是我实际使用了的。

先把边条拆下来,然后拿下破了的角码,把新的角码换上,这个过程就比较简单不用多的图了。安装好如下

好了之后,重新装回去这个的维修就完成了。

没拍好,有点模糊。不要在乎那么多细节,知道我把东西修好了就行。就是有一个后遗症,我是直接用手摸的免钉胶,也是注定了手上————

扣了半天也不干净。洗是洗不下来的,只能慢慢扣咯。

 

Qt(C++)调用MATLAB的几种方法

Qt

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。正如Qt官网的说法:https://www1.qt.io/cn/   
软件开发变得更加智能

创建流畅的、高性能与直观的UI及嵌入式设备——不同平台只需一套代码。

 Qt的优势就是可以一套代码兼容多平台,这个也是我比较亲睐Qt的原因。

MATLAB

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也使得MATLAB能够深入到科学研究及工程计算各个领域。

这个也决定了MATLAB也是比较容易在别的语言中集成,这里也就是举例一下几种常见的Qt与MATLAB的交互方式。

1.通过文本文件交互。

这个就是比较简单,各自独立的。只需要分别操作文本文件就行。

MATLAB写文件,和c的语法一样:

fid = fopen('test.txt','a');
test = 10;
fprintf(fid,'%d \t ',baocun);
fprintf(fid,'\r\n'); % 换行
fclose(fid);

Qt读取文件,语法很简单:

QString displayString;
QFile file("test.txt");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    qDebug()<<"Can't open the file!"<<endl;
}
while(!file.atEnd())
{
    QByteArray line = file.readLine();
    QString str(line);
    qDebug()<< str;
    displayString.append(str);
}

这样就可以实现MATLAB的数据,缺点是交互很慢。不能处理数据交互频繁的需求。只作为参考,强烈不推荐的方式。

2.调用MATLAB独立引擎的。

Engine *eg = engOpen(NULL);      //打开MATLAB引擎
 
    bool flag =engEvalString(eg, "cd  D:/Qt");                  //向MATLAB发送字符串命令
 
    //修改工作路径
 
mxArray *a = NULL;
 
double init = 2;
a = mxCreateDoubleMatrix(1, 1, mxREAL);
memcpy((void*) mxGetPr(a), (void*)&init, sizeof (double));
engPutVariable(pEng, "A", A);
 
init = 1;
memcpy((void*) mxGetPr(a), (void*)&init, sizeof (double));
engPutVariable(pEng, "b", a);
 
mxDestroyArray(A);
    engEvalString(ep, "s=add(a,b);");                      //求和
 
    engEvalString(ep, "save test.mat;");                    //保存所有变量
 
 
    mxArray *s = engGetVariable(ep, "s");                  //将MATLAB变量传回VS空间
 
    printf("s=%f", *mxGetPr(s));      //打印结果
 
    engClose(ep);                 //关闭精简版MATLAB

这种方法比较适合需要调用图形库的,可以很方便是嫌绘图的功能。但是同样的缺点就是速度比较慢。会有独立的窗口出现,用户体验不够完美。

3.转换MATLAB程序到c/c++语言。

这个方法操作起来很简单,如图:

直接按提示操作就行。这里的简单只是说操作简单,而实际的使用中发现,这个东西很不好用,很多函数或者借口不支持。这个也是不推荐的方法。

4.将MATLAB程序生成dll库

这个方法也是相对比较简单,是比较常用的方法。

具体请参考:https://blog.csdn.net/hongandyi/article/details/79433623

我比较推荐这种用法,数据交互比较快,不会影响程序的整理运行效果。比较需要注意的就是一定要首先调用xxxxInitialize()(xxxx是你的函数库名),因为别的错误编译的时候会报错,很容易就能找到问题,而如果不运行xxxxInitialize()则会在运行的时候报错,新手可能就手足无措,找不到问题了。

 

好了,上边就是据我所知的四种调用MATLAB的方法,文章比较粗糙,当然专注技术这不能成为理由。还是水平有限,需要的人将就着看吧。当然如果有别的方法也欢迎交流。QQ:371359001

文章欢迎转载。

win7系统安装Oracle 11gR2

因为想学习一下Oracle数据库,这里记录一下安装的过程。因为服务器带宽有限,文章中就不过多的插入图片了。

去官网或者论坛下载软件安装包,正常情况下安装包下载下来后会是两个文件,分别命名win32_11gR2_database_1of2、win32_11gR2_database_2of2,需要将这两个文件放到一个目录下,随便解压一个都会自动合并成为名为database的一个文件夹。

进入文件夹找到setup.exe文件,双击运行到如下界面:

安全问题的通知什么的,邮件我不填,接收安全更新我也不要,所以对号去掉后,直接下一步提示未指定电子邮件地址选“是”,下一步到选择安装选项。

这里选择第一个“创建和配置数据库”,继续下一步到系统类。

我这里比较特殊,是个小应用所以我选桌面类,当然服务器的话就得选服务器类了,选择好以后继续下一步到典型安装。 这里就分叉了,桌面和服务器的选项步骤都是不一样的。

毫无疑问又是一个下一步,路径什么的愿意改就改改。我不愿意改,口令也用最简单的admin,然后就直接下一步到先决条件检查了。

检查完成会出一个响应文件,这个文件可以找个地方保存一下,玩意用到了,你说是不。

那么就下一步等待安装完成吧,具体怎么用那就是另外的事了。

LEDE上搭建svn服务器(二)

我这里用的是斐讯K3,本来k3也是支持usb的接入的,但是我又有一台老母鸡(玩客云),感觉移动硬盘挂载到老母鸡上更方便,最最重要的是我看中的老母鸡的脱机下载功能,简直强到没有朋友.
那么问题来了,k3上一些功能就用不了了,比如我打算搭一个svn的代码库,这样就没有足够的磁盘空间来实现。
这个时候就需要有一个折中的实现了,简单的说就是用老母鸡做samba服务器,用k3刷一个lede去挂载,再安装相应的svn的服务器来实现。这里说起来原理很简单,但是实现起来还费了一些事。
首先需要开启老母鸡的Samba服务,这个就需要下载相应的app了,这个是傻瓜式的,在app里找找就能找到。设置完成后顺手在电脑上试着访问一下,这个就比较简单了,直接\\192.168.1.x\。应该可以看到玩客云内的文件,这里我也就顺手映射一个网络驱动器。用起来跟本地磁盘一样一样的 。
其次在k3种安装cifs的支持:
opkg update opkg install kmod-fs-cifs #opkg install kmod-nls-utf8 kmod-nls-base kmod-crypto-hmac kmod-crypto-md5 kmod-crypto-misc cifsmount
这里需要注意的是,这个模块安装完成以后,重启路由器才能生效。
重启后简单使用的示例:
mount -t cifs //cifs-server/share /localfolder -o user=username,password=password
匿名访问:
mount -t cifs //cifs-server/share /localfolder -o guest
然后到挂载的目标路径查看一下有没有看到对应的文件夹文件夹,这里注意,这里的mount重启后会没了,可以ssh登录到系统,编辑/etc/fstab文件
//shwde7xxx.ccr.corp.xxxxx.com/SE_DailyBuild   /home/12/345 cifs auto, username=gli16,password=xxxxx 0 0
然后
mount -a
立即挂载,以后路由器重启以后也可以自动挂载了
随后安装svn到lede上:

SecureCrt连接到路由器

2.  安装subversion-server

opkg update    

    opkg install subversion-server

这里需要在lede的web界面安装,否则会出现依赖错误,原因我没有做深究。

3.  创建第一个repository

mkdir -p /mnt/myrepo/test/

svnadmin create /mnt/myrepo/test/

4.  修改配置文件

vi /mnt/myrepo/test/conf/svnserve.conf

内容改成如下:

[general]

anon-access = none

auth-access = write

realm = My First Repository

password-db = ../../passwd

authz-db= ../../authz

5.  /mnt/myrepo/test/conf/目录下的passwd,authz两个文件移动到/mnt/myrepo/,这样,除了test这个项目外,以后再创建的项目只需要把它自己的svnserve.conf修改成test相同的内容,就可以共享这两个文件进行用户管理。

mv /mnt/myrepo/test/conf/passwd /mnt/myrepo/

mv /mnt/myrepo/test/conf/authz /mnt/myrepo/

6.  修改authz文件

vi /mnt/myrepo/authz

[/]

#harry = rw

#&joe = r

#*= r

test= rw

6.  修改passwd文件

vi /mnt/myrepo/passwd

[users]

#harry = harryssecret

#sally = sallyssecret

test= 123456

7.  使svn支持提交日志的修改。(如果不需要修改提交日志,这一步可以跳过)

cp /mnt/myrepo/test/hooks/pre-revprop-change.tmpl /mnt/myrepo/test/hooks/pre-revprop-change

chmod a+x /mnt/myrepo/test/hooks/pre-revprop-change

8.  启动svn服务

/etc/init.d/subversion start

9.  测试svn服务

随便找台能上网的电脑,装上TortoiseSVN,我这里有个下载地址:http://pan.baidu.com/share/link?shareid=350727&uk=908253079

安装完成之后。打开到D盘,在电脑空白右键,在弹出菜单中点击SVN CheckOut,弹出如下界面:

输入URL of repository,其中test.xicp.net是上一章节自己注册的动态域名。点击OK。

输入刚刚/mnt/myrepo/passwd文件中填写的账号密码:test, 123456。显示CheckOut Finished,再看看d:/test文件夹,显示了绿色的钩,说明svn服务可以使用了。

 

参考链接:

在路由器LEDE系统上安装svn-server版本库(一)

ps:文中提到的k3不是,是斐讯k3刷过lede的固件以后使用。

 

家里有一个斐讯的k3路由器做主路由器,想着能用就这么一直用了。但是目前有时会有公司做不完的工作,需要家里加班,但是拷代码太费劲,版本也不好控制,所以就折腾在路由器上面搭一个。

这个需要考虑的是,我这个路由器上并没有挂载硬盘,因为这个路由器的供电能力实在是太弱了,根本供不起移动硬盘,上次用的固态移动硬盘才是凑合能用,那个硬盘这次还是给别的地方用过了,所以手头暂时没有可以用的硬盘,这里就拿U盘挂载起来当主磁盘用了,虽然寿命是个问题,但是短时间用用应该没啥问题。

首先要说就是我也不是一个大神,就是一个小菜鸟,当然遇到问题首先就是百度解决(也不会搭梯子,墙出不去,问不到古哥。)因为LEDE本身是带有软件包的安装功能,所以我就先去搜索了。搜索svn相关字眼并没有结果,很烦!!搜索git倒是有,但是我的项目是建立在svn上,只能作罢。于是百度关键字“lede svn-server”,也没有合适的结果,后来想到lede是openwrt的衍生版,而openwrt时间长了,应该有大神移植的软件,然后换关键字“openwrt svn-server”,果然不出所望有合适的结果。搜到链接:Openwrt 路由器上 安装 svn server 大神的文章简直就是指路明灯,于是我连命令都不用改的就安装了svn server。

1.opkg update

2.opkg install subversion-server

3.cat /proc/mounts明确挂载点/tmp/mnt/sda4

然后cd到目标挂载点,再就是按流程走了,这里不抄了。。会用就行

arm-linux嵌入式设备上中文输入法的实现

这里要说的是,这里的实现并不是我自己写的,我只是借用了别人的,实际就是syszuxpinyin具体情况,可以自行百度。

这里我先分享下源码链接: https://pan.baidu.com/s/1jHZ13D0 密码: igjw。

这里简单说一下调用方法,我这里没有用dll的方式,而是直接用源码的方式编译到工程中。首先将源码包含到程序中,在需要调用的类中包含input.h文件。同时需要实现一个槽函数

void confirmString(QString gemfield);

具体来说,就是在在.h中定义

void confirmString(QString gemfield);

InputMethod *inputmethod;

在cpp中调用

构造inputmethod = new InputMethod(this);

析构delete inputmethod;

输入inputmethod->open();

获取输入confirmString(QString gemfield)
其中gemfield就是输入的内容

也可以调用inputmethod->setcurrentString(curstr);来获取当前的内容。

这里因为对网络的日志编辑器也不会用,反正就是说明白就行。也可以直接QQ371359001联系交流指导我一下。这里还有个没实现的,我突然想起来应该是可以写成单例模式,这里并没有实现,有空可以改改。还有就是我对源码做了一点更改,原本的是基于4.x做的,我给改了一点改成了5.x的了。反正很简单的改改,也没啥技术含量,所以具体的改哪里我都玩个。

基于致远电子EPC-9600I-L工控主板的qt5.6移植

20180228做了这个项目之后,几个月来没有做过类似技术的,都忘干净了,于是回来有看。这里感慨下,写了博客真好。

并且对文中有解释的不够明确的用黑体字做了补充解释。

 

公司的产品需求,做便携式仪器,最开始使用的wince系统的板子,后来又使用微型的winxp或者win7的桌面操作系统的板子,wince虽然稳定,但是上游厂商已经不做支持。原因有三点:

1、微软原厂的策略,已不在WinCE系统上投入人力;
2、基于微软的策略,IC原厂也不再提供对WinCE BSP的维护,新处理器已经不再提供WinCE BSP;
3、当前各种外围模块厂家不提供对WinCE的驱动支持(比如摄像头、3G/WiFi/4G模块等众多重要外设)。

(参考链接周立功

而winxp  和win7等桌面操作系统的板子,因为系统的原因,在用户强制断电的情况下,经常性的系统奔溃。这里我们不得不投向顺应市场Linux系统产品。这里我们选择了周立功的9600i-l工控主板。

EPC-9600I-L 是广州致远电子有限公司开发的基于 AM3352 处理器的工控主板。 板载 6RS232 串口(两路可通过软件切换,与 RS485 复用),两路 RS485 串口, 4 USB Host 2.0接口, 1 USB OTG1 10/100M 以太网接口、 2 CAN 接口、 1 TF 卡接口, 4 ADC1 路音频输入输出, 还有 16 TFT 液晶接口和 4 线电阻式触摸屏接口。

这个工控主板完全可以满足我们的需求,而这里的编程 就是用的Qt,而以前的程序也是基于Qt开发,移植的工作量也是不会太大。

这样就开始了,配到的屏是LCD_TM070RDH12_24B,一个7寸800×480的。板子拿到手以后,用配的fpc排线连接屏和板子,上电后会发现屏并不能正常亮。这里就是因为开发板烧写的内核是一个480×272的4.3寸屏的内核,所以我们需要烧写一个对于的800×480的7寸屏的内核。这里具体烧写办法,在zlg的资料里面都有,按说明操作就行了。

下来就是调试了,这里就需要连接串口。这个工控板的接口不像一般的开发板一样是ttl电平,这个只能是rs232电平的。链接方法如图

后边就是移植开发板的qt库,因为板子文件系统自带的qt环境是qt4.7.3,而我们的程序是用5.6开发的,这里就需要移植新的qt库,好在zlg对qt5.6做了移植,这里我也拿到了对应的qt库。具体的操作方法如下:

        先使用百度云盘下载做好的qt5,链接: http://pan.baidu.com/s/1bpnNiP5 密码: 6d5t。
        1,首先关闭板内QT环境初始化脚本。
            注释掉/etc/init.d/S90qt内的语句
        2,删除板内原本的4.7.3的固件。
            wr rm /usr/lib/libQt*
            wr rm -rf /usr/lib/qt
          wr rm /usr/bin/libQt*
            wr rm -rf /usr/bin/qt
          wr rm /usr/bin/ts_*
        3,解压qt5.tar.gz与tslib_sw.tar.bz2到/opt目录下,然后拷贝tslib_sw/bin/下的所有文件到/usr/bin/目录下。
这里需要讲一下,因为Linux的软硬链接复制的时候,可能会有问题,所以需要打包复制,打包完成以后可以通过scp传到板子的制定目录下,如:
scp qt5.tar.gz root@192.168.1.111:/opt/home按提示输入密码就行了。
运行是碰到一个bug,国外的网站上找到了解决方案

 

        4,修改/etc/profile文件如下:
        export TSLIB_ROOT=/opt/tslib_sw
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointeral
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib/export QT_ROOT=/opt/qt_install
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins/
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export QT_QPA_FB_TSLIB=1
export QWS_DISPLAY=LinuxFB:/dev/fb0
export QWS_SIZE=800X480
export QT_QWS_FONTDIR=$QT_ROOT/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/libexport LD_PRELOAD=/lib/preloadable_libiconv.so
然后source /etc/profile
触屏校准。
            wr ts_calibrate
这样环境变量就设置好了,在运行程序就可以正常了。但是在控制台就可以看到有一个iconv_openfailed的错误。这里就说要说到最后一个export LD_PRELOAD=/lib/preloadable_libiconv.so ,因为在编译qt的时候没有加-no-iconv 选项,所以只能单独编译一个libiconv。通过交叉编译工具链生成arm平台上的iconv链接库的方法如下:
下载libiconv-1.14.tar.gz, 解压tar -xvf  libiconv-1.14.tar.gz
./configure –host=arm-none-linux-gnueabi –prefix=xxxxxxx ,完成后make (-j8表示8线程) 进入prefix指定的目录下lib目录下找preload,preload中有preloadable_libiconv.so,复制到上边的LD_PRELOAD路径就行了。
复制进去后,再运行程序就不会报错了但是就有一个问题中文不能显示,这个就是因为没有中文的字库的原因了。这个问题就比较简单了。这个变量QT_QWS_FONTDIR指定的路径中的所有字体删除掉,只放入一个中文字体,重新运行程序 就会发现中文正常显示了。这个是因为系统在没有找到指定的字体的时候,只能用唯一的字体代替。自此,qt在arm-Linux的移植工作就算是完成了。这个要感谢指导过的大神和抱过的大腿了。
也希望我的经历可以帮到后边的朋友。
 

基于哈尔滨机务段DF7型内燃机车电子恒功率使用情况分析

在以前没有接触过恒功率,对其工作原理不是很清楚。在接触到这个测试台的项目后,通过分析现场实物结合原始厂家的测试说明。终于算是明确的了解了其工作原理和需要的测试方法。

说白了电子恒功率调节器通过调节励磁电流,来平衡根据柴油机转速计算出来的理论功率和测功以及辅助设备功率。

分板1功能是在700rpm以上转速时调节辅助功率输出信号PHC。

分板2、3是恒功率组件,默认是没有,这次也是没有接触到其原理

分板4功能是空转保护,通过对比各电机电流判断空转状态,输出信为Pk。

分板5是信号处理的核心板块,通过对各个信号的处理,实现最终输出Vp值,此值是励磁电流大小的直接控制信号。

分板6是根据柴油机转速计算出各个转速下对应的U、I、P理论值。

分板7是电源板,把十号板生成的ac电源信号转化成DC ±12V电源供各分板使用。

分板8是测电压板子,把高压电转化为可以识别的信号。

分板9是直接的励磁电流输出板子,也是监测各关键信号电压值。

分板10就是把机车的24v或者110v信号转换成ac信号给分板7使用。

这里的分板测量就是根据每个板子的输入信号特性,给上输入信号的时候,去测量对应的输出信号。整机测量就是比较麻烦因为各个转速下的电压电流信号都是动态变化的,完全模拟机车的工况做测试,理论上是可能,但是这样的实现会非常麻烦。这里我们取关键特性作为测量

这几个特性作为设备的主要功能,测试正常即认为设备是正常的。

——————————————————————————-

这里有点小插曲,在设备做完以后,现场的使用人员并没有相应的工作经验,并不能确认工作的完成,所以只能配合客户上机车的水阻试验,就是将机车的功率消耗到加热水槽的水上。在这个过程中,应该是可以各个电机分路消耗,通过分别控制消耗电流可以模拟空转工况,这里也算是客户水阻试验台一个缺陷吧。待测车本身就是一个带病车,上线功率只能有200kw,问题出现很长时间一直没有解决。我在机车上通过观察电子恒功率各板块的信号,发现6号组件的输出信号不对,然后判断出事柴油机转速信号问题,这里要求客户提供可以测量拆转信号的示波器,然而并没有示波器,后来客户自行调整了拆转探头的间隙,于是又信号,机车功率就正常了。

然后 插上调整好的板子,就没有信号,新板子就有信号。这个现象困扰了我很久,客户也没有给时间去车上测试,后来经过分析当时机车的信号分析,可能是因为水阻试验时,分板1和分板4是断开的,可能会干扰信号给如到组件5,造成扣功,所以会没有信号。而新板子的信号,并不吻合于资料标准值,所以在有些许干扰的时候依然会有功率信号。但是这其实是错误的。所以目前客户的车其实是运行在一个错误的工况下,可能会有功率浪费。

建议用户可以接入分板1和分板4,同时按资料给定信号调试设备,才能达到理论效果。

MySQL插入数据,莫名其妙的乱码

接触数据库比较少,对数据库很多特性并不是很了解,所以就在数据库上用了很多的时间,比较头疼的就是数据库的中文乱码问题了,关于建表和建库过程中指定utf8这样的操作,是很正常的在网上也可以轻松找到相关的资料或者教程。我这个要说的是一个比较奇葩的情况。

这里先看下几个重要的点,在mysql命令行中show variables like ‘character%’;

全部UTF8没有任何问题,在看这里

两个表的数据类型都是varchar字符集都是utf8没问题,但是就是一个可以正常中文,另外一个一直都是乱码。在这就得说,问题还是得找根本,我想了多种方法去解决,统统没有效果,最后实在没有效果,只能到处建表sql,这里就发现问题了。

— —————————-
DROP TABLE IF EXISTS `testcode`;
CREATE TABLE `testcode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`remote_id` int(11) NOT NULL,
`type` varchar(255) NOT NULL,
PRIMARY KEY (`remote_id`,`id`),
KEY `id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

— —————————-
— Table structure for testobject
— —————————-
DROP TABLE IF EXISTS `testobject`;
CREATE TABLE `testobject` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`obj_id` int(11) NOT NULL,
`remote_id` int(11) NOT NULL,
`object` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`type` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`model` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`standard` float DEFAULT NULL,
PRIMARY KEY (`id`,`obj_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

这里看到有CHARACTER SET latin1这样的字样,但是在管理软件里统统是看不到这个的,只能在sql里看到。找到问题了就好解决,只需要删除CHARACTER SET latin1,然后再drop table,接着create就行。这个问题所示解决了。这个问题产生的原因应该就是在建表的过程中,没有指定utf8 ,后边改的utf8.造成数据类型的不统一才造成的。

现有qt项目建立TortoiseSVN代码库,用代码库管理版本(不用VisualSVN)

网上的教程多事VisualSVN+TortoiseSVN的设置,所以感觉很麻烦。这里介绍一下只用TortoiseSVN进行管理的方法。
首先安装TortoiseSVN,下载请看这里https://tortoisesvn.net/downloads.html现在最新版本为1.9.5版。
安装完成后,觉得英文有压力的话,可以去官网下载中文语言包
可以看到,支持的语言非常多,这里我们选择简体中文的就可以了
下载后安装完成,在设置里选择中文,然后应用。
这里需要注意的有一点,安装的时候需要安装全部组件,否则就会找不到目录,类似这样:
就是这里,记得选择。
完全安装完成后运行qtcreator,工具-选项-版本控制-Subversion,就可以看到已经有了svn.exe的程序。
前面都是准备工作,下面就是正式的使用了。
//——————————————————————————
文件-新建文件或项目-项目-Import Project-Subv Checkout
根据自己的svn设置,填入后边的选项,就可以正常的使用了,对于svn相关的操作这里不做多介绍,了,需要了解的可以自行百度。