30/09/2018, 16:44

Lỗi truyền tham số C++

Chào các bạn. Mình mới lập trình C++. Do trước đây mình lập trình vi điều khiển bằng C nên giờ làm bằng máy tính trên C++ có vài lỗi mình chưa biết cách khắc phục. Mình có tạo một khung dữ liệu truyền qua cổng COM máy tính. Đoạn code truyền dữ liệu của mình như sau:

 void writeByte(char speed)

	{
		array<Byte>^TxBfr = gcnew array<Byte>(7);
		TxBfr[0] = 1;
		TxBfr[1] = speed;

		for (int i = 2; i < 7; i ++)
		{
			TxBfr[i] = 0;
		}
		DWORD bytes_written, total_bytes_written = 0;
		fprintf(stderr, "Sending bytes...");
		if(!WriteFile(hSerial, TxBfr,6, &bytes_written, NULL))
		{
			fprintf(stderr, "Error
");
		}  

	}

Khi biên dịch thì xuất hiện lỗi sau: C2664: ‘WriteFile’ : cannot convert parameter 2 from ‘cli::array ^’ to ‘LPVOID’.
Mong các bạn chỉ hướng mình khắc phục.
Cảm ơn các bạn giúp đỡ.

Phạm Phước Nguyên viết 18:50 ngày 30/09/2018

Ah sau khi xem lại cấu trúc của hàm WriteFile thì mình sửa lại là truyền địa chỉ chứ không phải truyền cả mảng như trên:

if(!WriteFile(hSerial, &TxBfr, 6, &bytes_written, NULL))

Mà có bạn nào hiểu rõ cách truyền dữ liệu cho cổng COM có thể giải thích cho mình không. Cảm ơn các bạn nhiều ^^.
Ví dụ nếu mảng của mình là hỗn hợp định dạng biến như sau: Mảng A[7] = {int, char, float, float, float, float, int}. Thì truyền như trên có được không.

Lãnh Huyết viết 18:56 ngày 30/09/2018

Em học C++ được 3 tháng rồi nhưng thực sự ko hiểu bác viết cái gì
Cái này là nhúng hay gì mà liên quan đến vi điểu khiển hả bro?

Phạm Phước Nguyên viết 19:00 ngày 30/09/2018

À cái này mình giao tiếp robot di động dùng vi điều khiển. Mình đang tìm cách gửi lệnh xuống robot cho nó hiểu là chạy đi hướng nào, rồi lấy giá trị cảm biến về. Mình mới làm quen Visual C++ nên có nhiều thắc mắc muốn trao đổi với anh em. Đầu tiên mình khai báo cho nó open cổng COM sau đó thì gửi 1 byte dữ liệu như trên. Mở cổng thì được rồi mà truyền dữ liệu hổm rày chưa chạy hihi.

Bài liên quan
0