本人博客园原文链接 无法启动程序/exe 系统找不到指定的文件
这几天师兄给了我一个小车蓝牙通信上位机程序,在VS2015环境下,配置完eigen、OpenGL等等的库后,编译生早此袜成成功,但是,不能在VS中直接运行(可以打开Release文件目录的exe应用程序运行),提示“系统找不到指定文件”的错误,如图1所示;
解决方法
1. 选择工程,右键单击属性,打开工程的属性页,参考图2;
2. 选择“配置属性->常规”,选择输出目录,可以浏扒消览自己想要的位置,可以选择图1报错提示的位置,我的是 “F:\蓝牙上位机\UpperPCTest\Release” ,如图3所示;
3. 选择“链接器->常规”,选择输出文件陆激,设置为“Release\UpperPCTest.exe”,参考图4;
4. 生成、运行(F5),程序可以正常在VS中运行。
捷达vs5的蓝牙连接方式:分别打开手机和导航仪机的蓝牙功能,将手机设置为“所有人可见”,在手机中搜索蓝牙设备,找到后选择连接,密码则袜槐为0000,配对完成后连接成功。
捷达孙友VS5是捷达品牌首款SUV车型,外观时尚,注重细节。前脸采用大众的X设计元素,通过对引擎盖和下格栅的双向延伸,车身侧面线条的设计延续了大众品牌设计,贯穿整个车身。低前高后的设计增添了运动气息;多边形尾灯框架为尾部造型增添野性,整体造型设计具有很强的立体感,而与车头设计相呼应的底部护板则凸显了运动感和力量感。动力方面,搭载EA2111.4T110KW发动机,匹配MQ250手动变速箱和爱信AQ250六速自动变速箱。配置方面,ESP电子稳定系统、ACC自适应巡好州航等核心设备、KESSY智能无钥匙进入系统+第五代智能在线防盗系统、智能多功能行车电脑、车联网功能等等。
初涉android的蓝牙 *** 作,按照固定MAC地址连接获取Device时,程序始终是异常终止,查了好多天代码都没查出原因。今天改了一下API版本,突然就成功连接了。总结之后发现果然是个坑爹之极的错误。
为了这种错误拼命查原因浪费大把时间是非常不值得的,但是问题不解决更是揪心。可惜我百度了那么多,都没基梁有给出确切原因。今天特此mark,希望后来者遇到这个问题的时候能轻松解决。
下面是我的连接过程,中间崩溃原因及解决办法。
1:用AT指令获得蓝牙串口的MAC地址,地址是简写的,按照常理猜测可得标准格式。
2:开一个String adress= "************" //MAC地址, String MY_UUID= "************"//UUID根据通信而定,网上都有。
3:取得本地Adapter用getDefaultAdapter()远程的则用getRemoteDevice(adress); 之后便可用UUID开socket进行通信。
如果中途各种在getRemoteDevice处崩溃,大家可以查看一下当前的API版本,如果是2.1或以下版本的话,便能确定是API版本问题,只要换成2.2或者以上就都可以正常运行了~ 这么坑爹的错误的确很为难初学者。 唉·········· 为这种小trick浪费很多时间真是难过。
(另外有个重要地方,别忘了给manifest里面加以下两个蓝牙 *** 作权限哦局磨~)
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
下面附上Android蓝牙 *** 作中用固定MAC地址传输信息的模板,通用搜索模式日后再补删模板:
private BluetoothAdapter mBluetoothAdapter = null
private BluetoothSocket btSocket = null
private OutputStream outStream = null
private InputStream inStream = null
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB") //这条是蓝牙串口通用的UUID,不要更改
private static String address = "00:12:02:22:06:61" // <==要连接的蓝牙设备MAC地址
/*获得通信线路过程*/
/*1:获搏腊运取本地BlueToothAdapter*/
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
if(mBluetoothAdapter == null)
{
Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show()
finish()
return
}
if(!mBluetoothAdapter.isEnabled())
{
Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show()
finish()
return
}
/*2:获取远程BlueToothDevice*/
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address)
if(mBluetoothAdapter == null)
{
Toast.makeText(this, "Can't get remote device.", Toast.LENGTH_LONG).show()
finish()
return
}
/*3:获得Socket*/
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID)
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Socket creation failed.", e)
}
/*4:取消discovered节省资源*/
mBluetoothAdapter.cancelDiscovery()
/*5:连接*/
try {
btSocket.connect()
Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.")
} catch (IOException e) {
try {
btSocket.close()
} catch (IOException e2) {
Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2)
}
}
/*此时可以通信了,放在任意函数中*/
/* try {
outStream = btSocket.getOutputStream()
inStream = btSocket.getInputStream() //可在TextView里显示
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Output stream creation failed.", e)
}
String message = "1"
byte[] msgBuffer = message.getBytes()
try {
outStream.write(msgBuffer)
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Exception during write.", e)
}
*/
通用搜索模式代码模板:
简洁简洁方式1 demo
作用: 用VerticalSeekBar控制一个 LED屏幕的亮暗。
直接上码咯~
package com.example.seed2
import android.app.Activity
import android.app.AlertDialog
import android.app.Dialog
import android.os.Bundle
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
import java.util.UUID
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.bluetooth.BluetoothSocket
import android.content.DialogInterface
import android.util.Log
import android.view.KeyEvent
import android.widget.Toast
public class MetalSeed extends Activity {
private static final String TAG = "BluetoothTest"
private BluetoothAdapter mBluetoothAdapter = null
private BluetoothSocket btSocket = null
private OutputStream outStream = null
private InputStream inStream = null
private VerticalSeekBar vskb = null
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB") //这条是蓝牙串口通用的UUID,不要更改
private static String address = "00:12:02:22:06:61" // <==要连接的蓝牙设备MAC地址
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
this.vskb = (VerticalSeekBar)super.findViewById(R.id.mskb)
this.vskb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerX())
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
if(mBluetoothAdapter == null)
{
Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show()
finish()
return
}
if(!mBluetoothAdapter.isEnabled())
{
Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show()
finish()
return
}
}
private class OnSeekBarChangeListenerX implements VerticalSeekBar.OnSeekBarChangeListener {
public void onProgressChanged(VerticalSeekBar seekBar, int progress, boolean fromUser) {
//Main.this.clue.setText(seekBar.getProgress())
/* String message
byte [] msgBuffer
try {
outStream = btSocket.getOutputStream()
} catch (IOException e) {
Log.e(TAG,"ON RESUME : Output Stream creation failed.", e)
}
message =Integer.toString( seekBar.getProgress() )
msgBuffer = message.getBytes()
try{
outStream.write(msgBuffer)
} catch (IOException e) {
Log.e (TAG, "ON RESUME : Exception during write.", e)
} */
}
public void onStartTrackingTouch(VerticalSeekBar seekBar) {
String message
byte [] msgBuffer
try {
outStream = btSocket.getOutputStream()
} catch (IOException e) {
Log.e(TAG,"ON RESUME : Output Stream creation failed.", e)
}
message =Integer.toString( seekBar.getProgress() )
msgBuffer = message.getBytes()
try{
outStream.write(msgBuffer)
} catch (IOException e) {
Log.e (TAG, "ON RESUME : Exception during write.", e)
}
}
public void onStopTrackingTouch(VerticalSeekBar seekBar) {
String message
byte [] msgBuffer
try {
outStream = btSocket.getOutputStream()
} catch (IOException e) {
Log.e(TAG,"ON RESUME : Output Stream creation failed.", e)
}
message =Integer.toString( seekBar.getProgress() )
msgBuffer = message.getBytes()
try{
outStream.write(msgBuffer)
} catch (IOException e) {
Log.e (TAG, "ON RESUME : Exception during write.", e)
}
}
}
@Override
public void onStart()
{
super.onStart()
}
@Override
public void onResume()
{
super.onResume()
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address)
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID)
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Socket creation failed.", e)
}
mBluetoothAdapter.cancelDiscovery()
try {
btSocket.connect()
Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.")
} catch (IOException e) {
try {
btSocket.close()
} catch (IOException e2) {
Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2)
}
}
// Create a data stream so we can talk to server.
/* try {
outStream = btSocket.getOutputStream()
inStream = btSocket.getInputStream()
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Output stream creation failed.", e)
}
String message = "read"
byte[] msgBuffer = message.getBytes()
try {
outStream.write(msgBuffer)
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Exception during write.", e)
}
int ret = -1
while( ret != -1)
{
try {
ret = inStream.read()
} catch (IOException e)
{
e.printStackTrace()
}
}
*/
}
@Override
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)