仔细对比了一下与ST库的不同之处在于:for( int i= 0;i<Len;i++) { APP_Rx_Buffer[APP_Rx_ptr_in]=(Buf++); APP_Rx_ptr_in++; // To avoid buffer overflow //下面这个溢出检测需要在for循环类,每发送一次检测 if(APP_Rx_ptr_in == APP_RX_DATA_SIZE) { APP_Rx_ptr_in = 0; } }接收函数经验证没有错误:void USB_Receive(uint8_t Buf,uint32_t Length){ uint32_t i; / Send the received buffer / for (i = 0; i < Length; i++) { Buf
在oracle中可以使用bolb字段类型进行二进制流的存储
Java代码:
Oracle中插入并显示(用BLOB类型)
要在oracle里面存入 用 blob类型
首先在数据库里建立:
--连接到管理员
conn sys/tbsoft as sysdba;
--为scott用户授权
grant create any directory to scott;
--回到scott用户
conn scott/tiger;
--创建存储的表
CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);
--创建存储的目录
CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\picture';
--在c:下自己建一个叫picture的文件夹
CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
F_LOB BFILE;--文件类型
B_LOB BLOB;
BEGIN
iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)
VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
--插入空的blob
F_LOB:= BFILENAME ('IMAGES', FILENAME);
--获取指定目录下的文件
DBMS_LOBFILEOPEN(F_LOB, DBMS_LOBFILE_READONLY);
--以只读的方式打开文件
DBMS_LOBLOADFROMFILE (B_LOB, F_LOB,DBMS_LOBGETLENGTH (F_LOB));
--传递对象
DBMS_LOBFILECLOSE (F_LOB);
--关闭原始文件
COMMIT;
END;
/
--在C:\picture下放一张1gif
--将该存入表
call IMG_INSERT('1','1gif');
然后创建一个web项目 连接数据库后 创建一个BlobDAO类 用来取出表中的blob类型
Java代码 收藏代码
public class BlobDAO {
private static final BlobDAO instance = new BlobDAO();
private Connection conn = null;
private BlobDAO() {
}
public static BlobDAO getInstance() {
return instance;
}
private void initConn() {
conn = DBAccessgetInstance()getConn();
}
public byte[] getImage(String imgname) {
BufferedInputStream ins;//取得BLOB的IO流
byte[] bt = null;
initConn();
Blob bo = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select T_IMAGE from IMAGE_LOB where t_id=";
try {
ps = connprepareStatement(sql);
pssetString(1, imgname);
rs = psexecuteQuery();
if (rsnext()) {
bo = rsgetBlob("T_IMAGE");
try {
ins = new BufferedInputStream(bogetBinaryStream());
int bufferSize = (int) bolength();//取得BLOB的长度
bt = new byte[bufferSize];
try {
insread(bt, 0, bufferSize);
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
//建立字节缓存
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} finally {
try {
rsclose();
psclose();
connclose();
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
return bt;
}
}
在action里面调用getImage()方法并显示在页面上
Java代码 收藏代码
public ActionForward execute(ActionMapping mapping, ActionForm form,
>
1解压stm32f10x_stdperiph_libzip
可以从ST官方网站免费下载。 2创建一个Demo文件夹 21 新建子文件夹User,用于存放用户源程序 22
新建子文件夹Project,用户KEIL工程文件 23 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。
3 复制源代码到Demo文件夹 31
将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V312Libraries文件整体复制到
Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。 32 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹
4 新建一个Keil MDK工程 41 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行 *** 作
42 选择CPU类型为 STM32F103ZE (这是安富
莱STM32开发板采用CPU类型) 43
当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件) 44
根据自己的需要修改Target名字。(名字任意) 45 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)
User : 存放用户自己写的源代码 RVMDK : 存放启动文件(汇编文件) StdPeriph_Driver :
存放ST标准库文件 CMSIS : 存放CMSIS接口文件(这也是库的一部分) 46 创建好Group后,我们开始依次添加文件。 5
修改源代码。我们将修改mainc 文件,换成我们自己跑马灯程序。 6 配置工程, 点击“Options”按钮 61
切换到Output。 选择Object文件夹。 在Create Hex File 前打钩。 62 切换带Listing。
选择Listings文件夹 63 切换到C/C++
添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)
修改Includes路径 64 切换到Debug 选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器 再
Run to main前打钩 64 切换到Utilities 选额调试器类型,我们选择Cortex-M3 J-Link
点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节 7 配置工程完毕。下面开始编译。
8 编译OK,开始调试。 9 教程结束。
1解压stm32f10x_stdperiph_libzip 可以从ST官方网站免费下载。 2创建一个Demo文件夹 21 新建子文件夹User,用于存放用户源程序 22 新建子文件夹Project,用户KEIL工程文件 23 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。 3 复制源代码到Demo文件夹 31 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V312Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。 32 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹 4 新建一个Keil MDK工程 41 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行 *** 作 42 选择CPU类型为 STM32F103ZE (这是安富莱STM32开发板采用CPU类型) 43 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件) 44 根据自己的需要修改Target名字。(名字任意) 45 为了便于代码管理,在这个Project下创建几个Group (名字可以任意) User : 存放用户自己写的源代码 RVMDK : 存放启动文件(汇编文件) StdPeriph_Driver : 存放ST标准库文件 CMSIS : 存放CMSIS接口文件(这也是库的一部分) 46 创建好Group后,我们开始依次添加文件。 5 修改源代码。我们将修改mainc 文件,换成我们自己跑马灯程序。 6 配置工程, 点击“Options”按钮 61 切换到Output。 选择Object文件夹。 在Create Hex File 前打钩。 62 切换带Listing。 选择Listings文件夹 63 切换到C/C++ 添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏) 修改Includes路径 64 切换到Debug 选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器 再 Run to main前打钩 64 切换到Utilities 选额调试器类型,我们选择Cortex-M3 J-Link 点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节 7 配置工程完毕。下面开始编译。 8 编译OK,开始调试。 9 教程结束。
你在“添加文件”中把C文件加入工程中,另外,你还需要创建一个对应于这个C文件的H文件,和C文件放在一个目录下,这样在需要调用的文件头上加一句#includee "myfunctionh"就可以了。
以上就是关于stm32f4 vcp接收函数死机全部的内容,包括:stm32f4 vcp接收函数死机、.net怎样将图片以二进制流的方式存入Oracle数据库里 在以二进制流的方式读取显示 380543828@qq.com 求源码、如何使用MDK5.0建立STM32F103工程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)