- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi đang cố gắng sử dụng API máy chủ USB Android để đọc dữ liệu từ Bộ điều khiển trò chơi USB của mình, sau khi nó hoạt động, tôi sẽ kết nối các thiết bị khác để kiểm tra. Bộ điều khiển trò chơi của tôi được kết nối với điện thoại Android bằng cápOTG. Bây giờ tôi có thể lấy thông tin về thiết bị, điểm cuối nhưng tôi không biết cách đọc dữ liệu thô và hiển thị nó.
Có ai có thể giúp tôi được không? Một số mã mẫu sẽ được đánh giá rất cao.
Số lần xem văn bảnHiển thị;
ArrayList listItems = new ArrayList();
Bộ chuyển đổi ArrayAdapter;
Giá trị chuỗi = "";
Trình quản lý USB;
Thiết bị USBDevice = null;
byte riêng tư[] byte;
riêng tư int THỜI GIAN = 0;
lực lượng boolean riêngClaim = true;
tĩnh Đang chờ xử lý mPermissionIntent;
Kết nối USBDeviceConnection = null;
Điểm đầu vào UsbEndpoint = null;
Điểm đầu ra UsbEndpoint = null;
Trình xử lý riêng mHandler = Trình xử lý mới();
@Ghi đè
khoảng trống công khai onCreate(Gói đã lưuInstanceState) {
super.onCreate(savedInstanceState);
mManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mPermissionIntent = Đang chờ xử lýIntent.getBroadcast(this, 0, new Intent(
"com.android.example.USB_PERMISSION"), 0);
Bộ lọc IntentFilter = IntentFilter mới();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);
HashMap deviceList = mManager.getDeviceList();
giá trị = giá trị + "deviceListSize:" + deviceList.size() + ",tostring:"
+ deviceList.toString();
Iterator deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
device = deviceIterator.next();
giá trị = giá trị + ",id thiết bị:" + device.getDeviceId()
+ ",tên thiết bị:" + device.getDeviceName();
giá trị = giá trị + ",Giao thức:" + device.getDeviceProtocol()
+ ",ProductId:" + device.getProductId();
giá trị = giá trị + ",DeviceClass:" + device.getDeviceClass()
+ ",VendorId:" + device.getVendorId();
}
if (thiết bị != null) {
giá trị = giá trị + ",getInterfaceCount:"
+ device.getInterfaceCount();
UsbInterface intf = device.getInterface(0);
giá trị = giá trị + ",intf.getEndpointCount():"
+ intf.getEndpointCount();
Điểm cuối USBEndpoint1 = intf.getEndpoint(0);
Điểm cuối USBEndpoint2 = intf.getEndpoint(1);
mManager.requestPermission(thiết bị, mPermissionIntent);
if (mManager.hasPermission(device)) {
giá trị = giá trị + ",có quyền trên thiết bị!";
kết nối = mManager.openDevice(thiết bị);
if (kết nối == null) {
giá trị = giá trị + ",kết nối null";
} khác {
giá trị = giá trị + ",getFileDescriptor:"
+ Connection.getFileDescriptor();
if (endpoint1.getDirection() == UsbConstants.USB_DIR_IN) {
Điểm cuối đầu vào = điểm cuối1;
} khác {
Điểm cuối đầu ra = điểm cuối1;
}
if (endpoint2.getDirection() == UsbConstants.USB_DIR_IN) {
Điểm cuối đầu vào = điểm cuối2;
} khác {
Điểm cuối đầu ra = điểm cuối2;
}
}
if (InputEndpoint == null) {
countDisplay.setText(giá trị + ",InputEndpoint là null");
}
if (OutputEndpoint == null) {
countDisplay.setText(giá trị + ",OutputEndPoint là null");
}
Connection.claimInterface(intf, ForceClaim);
mHandler.postDelayed(runnable, 1);
} khác {
giá trị = giá trị + ",Không có quyền trên thiết bị!";
}
}
setContentView(R.layout.activity_main);
Trình tăng cường LayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Xem v = inflater.inflate(R.layout.activity_main, null);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
bộ đếm int = 1;
countDisplay = TextView mới (cái này);
ll.addView(countDisplay);
countDisplay.setText(giá trị + ", bộ đếm ở đây");
nút Nút cuối cùng = Nút mới (cái này);
nút.setOnClickListener (OnClickListener mới() {
@Ghi đè
khoảng trống công khai trênClick(Xem v) {
// TODO sơ khai phương thức được tạo tự động
if (device != null && mManager.hasPermission(device)) {
giá trị = giá trị + ",id thiết bị:" + device.getDeviceId()
+ ",tên thiết bị:" + device.getDeviceName();
giá trị = giá trị + ",Giao thức:" + device.getDeviceProtocol()
+ ",ProductId:" + device.getProductId();
giá trị = giá trị + ",DeviceClass:" + device.getDeviceClass()
+ ",VendorId:" + device.getVendorId();
countDisplay.setText(giá trị + ",okok");
} khác {
nếu (thiết bị != null)
mManager.requestPermission(thiết bị, mPermissionIntent);
}
}
});
ll.addView(nút);
setContentView(ll);
}
và có thể chạy được:
riêng tư Runnable runnable = new Runnable() {
công khai void run() {
if (kết nối != null) {
int count = Connection.bulkTransfer(InputEndpoint, byte,
byte.length, THỜI GIAN);
countDisplay.setText(giá trị + ",bultTransferNo:" + đếm);
countDisplay.setText(giá trị + "bulkValue:" + byte);
} khác {
countDisplay.setText(giá trị + ",kết nối là null");
}
}
};
câu trả lời hay nhất
Chương trình này đóng vai trò là một ví dụ về chức năng lưu trữ USB sau:
Khớp các thiết bị dựa trên lớp giao diện, lớp con và giao thức (xem device_filter.xml)
IO không đồng bộ trên điểm cuối hàng loạt
Tất cả bản quyền mã:
/*
* Bản quyền (C) 2011 Dự án mã nguồn mở Android
*
* Được cấp phép theo Giấy phép Apache, Phiên bản 2.0 ("Giấy phép");
* bạn không được sử dụng tệp này trừ khi tuân thủ Giấy phép.
* Bạn có thể lấy bản sao Giấy phép tại
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Trừ khi luật pháp hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm
* được phân phối theo Giấy phép được phân phối trên CƠ SỞ "NGUYÊN TRẠNG",
* KHÔNG CÓ BẢO ĐẢM HOẶC ĐIỀU KIỆN DƯỚI BẤT KỲ LOẠI NÀO, dù rõ ràng hay ngụ ý.
* Xem Giấy phép để biết các quyền quản lý ngôn ngữ cụ thể và
* những hạn chế theo Giấy phép.
*/
Thiết bị Adb
gói com.android.adb;
nhập android.hardware.usb.UsbConstants;
nhập android.hardware.usb.UsbDeviceConnection;
nhập android.hardware.usb.UsbEndpoint;
nhập android.hardware.usb.UsbInterface;
nhập android.hardware.usb.UsbRequest;
nhập android.util.SparseArray;
nhập java.util.LinkedList;
/* Lớp này đại diện cho một thiết bị USB hỗ trợ giao thức adb */.
lớp công khai AdbDevice {
mActivity cuối cùng riêng tư của AdbTestActivity;
riêng tư cuối cùng UsbDeviceConnection mDeviceConnection;
cuối cùng riêng tư UsbEndpoint mEndpointOut;
cuối cùng riêng tư UsbEndpoint mEndpointIn;
chuỗi riêng tư mSerial;
// nhóm yêu cầu cho điểm cuối OUT
riêng tư cuối cùng LinkedList mOutRequestPool = new LinkedList();
// nhóm yêu cầu cho điểm cuối IN
riêng tư cuối cùng LinkedList mInRequestPool = new LinkedList();
// danh sách các socket hiện đang mở
cuối cùng riêng tư SparseArray mSockets = new SparseArray();
int riêng tư mNextSocketId = 1;
riêng tư cuối cùng WaiterThread mWaiterThread = new WaiterThread();
AdbDevice công khai(Hoạt động AdbTestActivity, kết nối UsbDeviceConnection,
Giao diện USB intf) {
mHoạt động = hoạt động;
mDeviceConnection = kết nối;
mSerial = connect.getSerial();
Điểm cuối USB epOut = null;
Điểm cuối USB epIn = null;
// tìm điểm cuối số lượng lớn của chúng tôi
for (int i = 0; i < intf.getEndpointCount(); i++) {
UsbEndpoint ep = intf.getEndpoint(i);
if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
epOut = ep;
} khác {
epIn = ep;
}
}
}
if (epOut == null || epIn == null) {
ném IllegalArgumentException mới ("không tìm thấy tất cả các điểm cuối");
}
mEndpointOut = epOut;
mEndpointIn = epIn;
}
// trả về số serial của thiết bị
Chuỗi công khai getSerial() {
trả về mSerial;
}
// nhận được yêu cầu OUT từ nhóm của chúng tôi
USBRequest công khai getOutRequest() {
được đồng bộ hóa (mOutRequestPool) {
nếu (mOutRequestPool.isEmpty()) {
Yêu cầu UsbRequest = UsbRequest mới();
request.initialize(mDeviceConnection, mEndpointOut);
yêu cầu trả lại;
} khác {
trả về mOutRequestPool.removeFirst();
}
}
}
// trả về yêu cầu OUT cho pool
public void ReleaseOutRequest(Yêu cầu UsbRequest) {
được đồng bộ hóa (mOutRequestPool) {
mOutRequestPool.add(yêu cầu);
}
}
// nhận được yêu cầu IN từ nhóm
UsbRequest công khai getInRequest() {
được đồng bộ hóa (mInRequestPool) {
nếu (mInRequestPool.isEmpty()) {
Yêu cầu UsbRequest = UsbRequest mới();
request.initialize(mDeviceConnection, mEndpointIn);
yêu cầu trả lại;
} khác {
trả về mInRequestPool.removeFirst();
}
}
}
bắt đầu khoảng trống công khai () {
mWaiterThread.start();
kết nối();
}
public AdbSocket openSocket(Chuỗi đích) {
Ổ cắm AdbSocket;
được đồng bộ hóa (mSockets) {
int id = mNextSocketId++;
socket = AdbSocket mới(cái này, id);
mSockets.put(id, socket);
}
if (socket.open(destination)) {
ổ cắm trở lại;
} khác {
return null;
}
}
riêng tư AdbSocket getSocket(int id) {
được đồng bộ hóa (mSockets) {
trả về mSockets.get(id);
}
}
public void socketClosed(AdbSocket socket) {
được đồng bộ hóa (mSockets) {
mSockets.remove(socket.getId());
}
}
// gửi lệnh kết nối
kết nối khoảng trống riêng tư () {
Thông báo AdbMessage = AdbMessage mới();
message.set(AdbMessage.A_CNXN, AdbMessage.A_VERSION, AdbMessage.MAX_PAYLOAD, "host::\0");
tin nhắn.write(cái này);
}
// xử lý phản hồi kết nối
void void handConnect(tin nhắn AdbMessage) {
if (message.getDataString().startsWith("device:")) {
log("đã kết nối");
mActivity.deviceOnline(cái này);
}
}
dừng trống công khai () {
được đồng bộ hóa (mWaiterThread) {
mWaiterThread.mStop = true;
}
}
// gửi tin nhắn từ thiết bị
void ClarkMessage(tin nhắn AdbMessage) {
lệnh int = message.getCommand();
chuyển đổi (lệnh) {
trường hợp AdbMessage.A_SYNC:
log("đã nhận được A_SYNC");
phá vỡ;
trường hợp AdbMessage.A_CNXN:
xử lýConnect(tin nhắn);
phá vỡ;
trường hợp AdbMessage.A_OPEN:
trường hợp AdbMessage.A_OKAY:
trường hợp AdbMessage.A_CLSE:
trường hợp AdbMessage.A_WRTE:
Ổ cắm AdbSocket = getSocket(message.getArg1());
nếu (ổ cắm == null) {
log("Không tìm thấy ổ cắm LỖI");
} khác {
socket.handleMessage(tin nhắn);
}
phá vỡ;
}
}
nhật ký trống (Chuỗi s) {
mActivity.log(s);
}
lớp riêng WaiterThread mở rộng Chủ đề {
mStop boolean công khai;
công khai void run() {
// bắt đầu bằng lệnh đọc
AdbMessage currentCommand = AdbMessage mới();
AdbMessage currentData = null;
// Kiểm tra lỗi FIXME
currentCommand.readCommand(getInRequest());
while (true) {
được đồng bộ hóa (cái này) {
nếu (mStop) {
return;
}
}
Yêu cầu UsbRequest = mDeviceConnection.requestWait();
nếu (yêu cầu == null) {
phá vỡ;
}
Thông báo AdbMessage = (AdbMessage)request.getClientData();
request.setClientData(null);
AdbMessage messageToDispatch = null;
if (tin nhắn == currentCommand) {
int dataLength = message.getDataLength();
// đọc dữ liệu nếu độ dài > 0
if (dataLength > 0) {
message.readData(getInRequest(), dataLength);
currentData = tin nhắn;
} khác {
messageToDispatch = tin nhắn;
}
currentCommand = null;
} else if (tin nhắn == currentData) {
messageToDispatch = tin nhắn;
dữ liệu hiện tại = null;
}
if (messageToDispatch != null) {
// xếp hàng người khác đọc trước
currentCommand = AdbMessage mới();
currentCommand.readCommand(getInRequest());
// sau đó gửi tin nhắn hiện tại
công vănMessage(messageToDispatch);
}
// đưa yêu cầu trở lại nhóm thích hợp
if (request.getEndpoint() == mEndpointOut) {
phát hànhOutRequest(yêu cầu);
} khác {
được đồng bộ hóa (mInRequestPool) {
mInRequestPool.add(yêu cầu);
}
}
}
}
}
}
Tin nhắn Adb
gói com.android.adb;
nhập android.hardware.usb.UsbRequest;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
/* Lớp này đóng gói và gói lệnh adb */
lớp công khai AdbMessage {
// tên lệnh
chung tĩnh cuối cùng int A_SYNC = 0x434e5953;
chung tĩnh int A_CNXN = 0x4e584e43;
chung tĩnh công khai int A_OPEN = 0x4e45504f;
public static int A_OKAY = 0x59414b4f;
chung tĩnh công khai int A_CLSE = 0x45534c43;
chung tĩnh công khai int A_WRTE = 0x45545257;
// Phiên bản giao thức ADB
chung tĩnh công khai int A_VERSION = 0x01000000;
cuối cùng tĩnh công khai MAX_PAYLOAD = 4096;
ByteBuffer mMessageBuffer cuối cùng riêng tư;
riêng tư cuối cùng ByteBuffer mDataBuffer;
AdbMessage công khai() {
mMessageBuffer = ByteBuffer.allocate(24);
mDataBuffer = ByteBuffer.allocate(MAX_PAYLOAD);
mMessageBuffer.order(ByteOrder.LITTLE_ENDIAN);
mDataBuffer.order(ByteOrder.LITTLE_ENDIAN);
}
// đặt các trường trong tiêu đề lệnh
public void set(int command, int arg0, int arg1, byte[] data) {
mMessageBuffer.putInt(0, lệnh);
mMessageBuffer.putInt(4, arg0);
mMessageBuffer.putInt(8, arg1);
mMessageBuffer.putInt(12, (dữ liệu == null ? 0 : data.length));
mMessageBuffer.putInt(16, (dữ liệu == null ? 0 : tổng kiểm tra(dữ liệu)));
mMessageBuffer.putInt(20, lệnh ^ 0xFFFFFFFF);
nếu (dữ liệu != null) {
mDataBuffer.put(dữ liệu, 0, data.length);
}
}
public void set(int command, int arg0, int arg1) {
set(lệnh, arg0, arg1, (byte[])null);
}
public void set(int command, int arg0, int arg1, String data) {
// thêm số 0 vào cuối
dữ liệu += "\0";
set(lệnh, arg0, arg1, data.getBytes());
}
// trả về ID tin nhắn của lệnh
công khai int getCommand() {
trả về mMessageBuffer.getInt(0);
}
// trả về đối số đầu tiên của lệnh
int công khai getArg0() {
trả về mMessageBuffer.getInt(4);
}
// trả về đối số thứ hai của lệnh
công khai int getArg1() {
trả về mMessageBuffer.getInt(8);
}
// trả về vùng đệm dữ liệu của lệnh
ByteBuffer công khai getData() {
trả về mDataBuffer;
}
// trả về độ dài dữ liệu của lệnh
int công khai getDataLength() {
trả về mMessageBuffer.getInt(12);
}
// trả về dữ liệu của lệnh dưới dạng chuỗi
Chuỗi công khai getDataString() {
chiều dài int = getDataLength();
if (độ dài == 0) trả về null;
// cắt bớt số 0 ở cuối
trả về Chuỗi mới (mDataBuffer.array(), 0, length - 1);
}
ghi boolean công khai (thiết bị AdbDevice) {
đã đồng bộ hóa (thiết bị) {
Yêu cầu UsbRequest = device.getOutRequest();
request.setClientData(this);
if (request.queue(mMessageBuffer, 24)) {
chiều dài int = getDataLength();
nếu (độ dài > 0) {
yêu cầu = device.getOutRequest();
request.setClientData(this);
if (request.queue(mDataBuffer, length)) {
trả về đúng sự thật;
} khác {
device.releaseOutRequest (yêu cầu);
trả về sai;
}
}
trả về đúng sự thật;
} khác {
device.releaseOutRequest (yêu cầu);
trả về sai;
}
}
}
boolean công khai readCommand(Yêu cầu UsbRequest) {
request.setClientData(this);
trả về request.queue(mMessageBuffer, 24);
}
public boolean readData(Yêu cầu UsbRequest, độ dài int) {
request.setClientData(this);
trả về request.queue(mDataBuffer, length);
}
chuỗi tĩnh riêng extractString(Bộ đệm ByteBuffer, int offset, int length) {
byte[] byte = byte mới[độ dài];
for (int i = 0; i < length; i++) {
byte[i] = buffer.get(offset++);
}
trả về Chuỗi mới (byte);
}
@Ghi đè
Chuỗi công khai toString() {
Chuỗi commandName = extractString(mMessageBuffer, 0, 4);
int dataLength = getDataLength();
Kết quả chuỗi = "Thông báo Adb: " + commandName + " arg0: " + getArg0() +
" arg1: " + getArg1() + " dataLength: " + dataLength;
if (dataLength > 0) {
kết quả += ("dữ liệu: \"" + getDataString() + "\"");
}
return result;
}
tổng kiểm tra int tĩnh riêng tư (dữ liệu byte []) {
kết quả int = 0;
for (int i = 0; i < data.length; i++) {
int x = dữ liệu[i];
// dang, không có số nguyên không dấu trong java
nếu (x < 0) x += 256;
kết quả += x;
}
return result;
}
}
AdbSocket
gói com.android.adb;
/* Lớp này đại diện cho một ổ cắm adb hỗ trợ nhiều ổ cắm độc lập.
* kết nối ổ cắm với một thiết bị Thông thường, một ổ cắm được tạo.
* cho mỗi lệnh adb được thực thi.
*/
lớp công khai AdbSocket {
riêng tư cuối cùng của AdbDevice mDevice;
int cuối cùng riêng tư mId;
int riêng tư mPeerId;
AdbSocket công khai(thiết bị AdbDevice, int id) {
mDevice = thiết bị;
mId = id;
}
công khai int getId() {
trả về mId;
}
public boolean open(String đích) {
Thông báo AdbMessage = AdbMessage mới();
message.set(AdbMessage.A_OPEN, mId, 0, đích);
if (! message.write(mDevice)) {
trả về sai;
}
được đồng bộ hóa (cái này) {
thử {
Chờ đợi();
} bắt (InterruptedException e) {
trả về sai;
}
}
trả về đúng sự thật;
}
public void handMessage(tin nhắn AdbMessage) {
chuyển đổi (message.getCommand()) {
trường hợp AdbMessage.A_OKAY:
mPeerId = message.getArg0();
được đồng bộ hóa (cái này) {
thông báo();
}
phá vỡ;
trường hợp AdbMessage.A_WRTE:
mDevice.log(message.getDataString());
sendReady();
phá vỡ;
}
}
khoảng trống riêng tư sendReady() {
Thông báo AdbMessage = AdbMessage mới();
message.set(AdbMessage.A_OKAY, mId, mPeerId);
message.write(mDevice);
}
}
Về java - Sử dụng API máy chủ USB Android để đọc Bộ điều khiển trò chơi USB của tôi/hoặc dữ liệu thiết bị USB khác, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11899957/
Tôi tìm trên mạng nhưng không tìm thấy bài viết phù hợp giải thích cách sử dụng dịch vụ WCF bằng javascript, đặc biệt là WebScriptEndpoint. Bất cứ ai có thể đưa ra bất kỳ hướng dẫn về điều này? Cảm ơn bạn vì câu trả lời tốt nhất Đây là một bài viết về.
Tôi đang viết một chương trình C sẽ chạy các lệnh Linux, ví dụ: cat /etc/passwd | grep list cut -c 1-5 Tôi không nhận được kết quả nào *ở đây cha mẹ đợi con đầu lòng (chi
Vì vậy, tôi đang cố gắng xử lý việc tải tệp lên và sau đó lưu trữ tệp đó vào cơ sở dữ liệu dưới dạng tệp nhị phân. Sau khi lưu trữ, tôi cố gắng phân phát tệp trên URL đã cho. Tôi dường như không thể tìm thấy một phương pháp hoạt động ở đây. Tôi cần sử dụng cơ sở dữ liệu vì tôi sử dụng Google Apps
Tôi đang cố gắng tạo một macro thêm công thức bên dưới vào một ô rồi kéo nó qua cột và sao chép cùng một công thức trong cột H. Tôi muốn nhập dữ liệu vào cột F và H bằng công thức Range("F1") .công thức = "=IF(ISE
Câu hỏi tương tự như câu hỏi này, nhưng tôi muốn sử dụng OperatorPrecedenceParser để phân tích một biểu thức bằng ứng dụng hàm trong FParsec. Đây là AST của tôi: type Expression =.
Tôi muốn thay đổi truy vấn này thành mã tùy thuộc vào vị trí chọn COUNT(giới tính) làm số lượng giới tính từ khách hàng bằng cách sử dụng phần tiếp theo và node.js
Tôi đang sử dụng GNU bash, phiên bản 5.0.3(1)-distro (x86_64-pc-linux-gnu) và tôi đang tự hỏi tại sao tôi lại gặp lỗi cú pháp với một câu lệnh gán đơn giản: #/bin/bash var1= /tmp
Đây là lý do tại sao mã của tôi không hoạt động trong IE. Mã của tôi hoạt động trong tất cả các trình duyệt. Không có gì. Nhưng khi tôi chạy dự án của mình trên IE thì nó phát hiện lỗi. Và cả lớp jquery của tôi cũng như lớp InsertadjacentHTMl đều không
Tôi đang cố gắng thay đổi HTML bên trong của thẻ. Tôi không có quyền truy cập vào biểu mẫu nên không thể chỉnh sửa HTML. Mã định danh duy nhất mà thẻ có là thuộc tính "for". Đây là cấu trúc của đầu vào và nhãn:
Tôi có một trang nơi tôi trả lại bài đăng của người dùng, tôi có thể đưa ra nhận xét ngay lập tức về những bài đăng này bằng cách sử dụng một số mã jquery, sau khi nhận xét mới được đăng, tôi chèn nhận xét mới bên dưới bài đăng cùng với nút xóa. Vấn đề là nút Xóa không hoạt động trên các phần tử mới được chèn vào,
Tôi có tệp "được phân cách bằng đường ống" với khoảng 20 cột. Tôi chỉ muốn băm cột đầu tiên bằng cách sử dụng sha1sum, một số giống như số tài khoản và trả về phần còn lại của các cột. Cách tốt nhất để làm điều này bằng awk hoặc sed là gì? tài khoản
Tôi cần chèn nội dung sau vào bảng của mình... Bảng người dùng của tôi có năm cột id, tên người dùng, mật khẩu, tên, mục nhập. (Tôi chưa gửi bất cứ thứ gì vào mục này, tôi sẽ làm điều đó sau bằng php) Nhưng vì lý do nào đó tôi vẫn gặp lỗi này: #1054 - U
Vì vậy, tôi đang cố gắng có một trường nhập để tôi có thể nhập bất kỳ ký tự nào, nhưng sau đó viết thường giá trị đã nhập, xóa mọi ký tự không phải chữ và số, để lại "." Ví dụ mình nhập: 70% trái đất là nước, -!*#$^ & 30% đất bị mất
Tôi đang cố gắng làm một việc mà tôi nghĩ là rất đơn giản nhưng vì lý do nào đó tôi lại không đạt được kết quả như mong muốn? Tôi mới làm quen với javascript nhưng có kinh nghiệm với java nên tôi tin rằng mình không sử dụng một số loại quy tắc chính xác. Đây là phương thức lấy giá trị đầu vào, kiểm tra lựa chọn
Tôi muốn tải dữ liệu từ cơ sở dữ liệu mysql bằng Angularjs. Đây là cách ứng dụng hoạt động; người dùng đăng nhập và tên người dùng của họ được lưu trữ trong cookie. Tên người dùng này được hiển thị trên trang chủ. Tôi muốn nhận giá trị này và chuyển nó qua Angularjs
Tôi đang sử dụng autoLayout và tôi muốn đặt nhãn UIlabel trên UITableViewCell, nhãn này phải luôn ở bên phải và chính giữa phía bên phải của ô. Đây là điều tôi đang cố gắng đạt được nên ở đây bạn có thể thấy điều tôi đang nói đến
Tôi cần truy vấn tương đương với elaticsearch với MySql. Truy vấn sql của tôi: CHỌN DISTINCT t.product_id NHƯ id TỪ tbl_sup_price t
Tôi đang triển khai mã để sử dụng JSON. thiết lập func() { if let FlickrURL = NSURL(string: "https://api.flickr.com/
Tôi đã thử khai báo một biến bằng vòng lặp for và sau đó kiểm tra xem cols và rols có giống nhau không. Nếu có, nó sẽ chạy hàm đệ quy. Tuy nhiên, tôi gặp sự cố khi thực hiện thao tác trong javascript. Có ai có thể giúp được không? Bây giờ, khi so sánh col.1 và
Tôi đã đưa ra một ví dụ ngắn gọn về vấn đề tôi đang giải quyết. Mã HTML: 1 2 3 Mã CSS: .BB a:hover{ color: #000 } .BB > li:after {
Tôi là một lập trình viên xuất sắc, rất giỏi!